• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Linux管理員手冊(6)--登錄和注銷

    發布: 2007-7-13 21:16 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 12次 | 進入軟件測試論壇討論

    領測軟件測試網   說明當一個用戶登錄和注銷時發生了什么。較詳細地說明后臺進程的各種交互、log文件、配置文件等

      通過終端登錄

      首先,init 確認有一個getty 程序提供給終端連接(或控制臺)。 getty 偵聽終端等候用戶告知它要登錄 (這通常意味著用戶必然鍵入些什么)。當它注意到一個用戶,getty 輸出一個歡迎信息(存在/etc/issue 中),并提示用戶名,最后運行login 程序。 login 作為一個參數得到用戶名,并提示用戶輸入口令。如果正確,login 啟動給此用戶設置的shell;否則退出并終止進程 (可能在再給用戶一個機會輸入用戶名和口令之后)。 init 注意到進程終止,就給這個終端啟動一個新的getty 。

      注意唯一的新進程是由init 產生的(用fork 系統調用); getty 和login 只是替代進程運行的程序 (使用exec 系統調用)。

      為注意用戶,串行線需要一個單獨的程序,因為終端活動時可以(傳統上也是)變得復雜。 getty 也適應連接的速度和其他設置,這對撥號連接特別重要,因為連接和連接的參數可能不同。

      getty 和init 有多個版本在使用,各有優缺點。學習你的系統的版本也了解其他版本是個好主意(你可以用 Linux Software Map來找。)如果你沒有撥入,可能不必考慮 getty ,但 init 仍然很重要。

      通過網絡登錄

      一個網絡中的2臺計算機通常通過一個物理電纜連接。當他們通過網絡通信是,參與通信的每個計算機里的程序通過虛擬連接virtual connection通信,即一些虛構的電纜。虛擬連接的每端的程序,獨占自己的(虛擬)電纜。然而,因為這電纜不是真的,只是虛構的,所有計算機的操作系統可以在同一物理電纜上有多條虛擬連接。這樣,只用一條電纜,多個程序可以不必考慮其他通信而相互通信。使用同一電纜使多臺計算機是可能的;2臺計算機間存在的虛擬連接,其他計算機會忽略他們不參加的連接。

      那是一個復雜和抽象的真實描述。但可能足夠理解網絡登錄與普通登錄的不同的重要原因。不同計算機上的2個程序要通信時,虛擬連接建立。由于理論上可能從網絡上的任何一臺計算機登錄到任何一臺計算機,因此可能有極大數量的潛在的虛擬通訊。因此,為每個潛在的login啟動一個getty 是不現實的。

      有一個進程inetd(與getty 協同)處理所有的網絡登錄。當它發現一個進來的網絡登錄(即發現某臺其他計算機來的新的虛擬連接), 它啟動一個新進程來處理那個登錄。原來的進程繼續偵聽新的登錄。

      更復雜的是,網絡登錄有多個通訊協議。2個最重要的協議是 telnet 和rlogin 。除了登錄,還有許多其他虛擬連接可能建立(為FTP、Gopher、HTTP和其他網絡服務)。為要偵聽的每種類型的連接提供一個進程不是很有效,因此,只用一個偵聽器來識別連接的種類,能啟動正確的程序來提供服務。這個偵聽器叫inetd ;更多的信息請見《Linux網絡管理指南》。
      login干了些什么

      login 程序負責認證用戶(確認用戶名和口令相配),并建立串行線,啟動shell,建立用戶的初始環境。

      部分初始化設置是輸出文件/etc/motd (每天的短信息)的內容,并檢查電子郵件?梢栽谟脩艏夷夸浿挟a生一個叫.hushlogin 的文件來是上面所述的失效。

      如果存在文件/etc/nologin ,就不允許登錄。這個文件一般由shutdown 及其相關的東西產生。 login 檢查這個文件,如果這個文件存在,就拒絕接受登錄。如果這個文件確實存在,login 就會在退出之前,將它的內容輸出到終端。

      login 將所有失敗的登錄企圖登記在系統log文件中 (通過syslog )。它也登記所有的root的登錄。這些都對跟蹤入侵者有用。

      當前登錄著的用戶列在/var/run/utmp 中。這個文件直到系統下次啟動或關機前有效。系統剛啟動時它被清空。它列出了每個用戶和用戶使用的終端(或網絡連接),及一些有用的信息。 who 、w 及其他類似的命令查看utmp 文件得到都有誰登錄著。

      所有成功的登錄記錄在/var/log/wtmp 中。這個文件將無限制地增大,所以必須有規律的清除,例如有個每周的cron 任務來清除它。 last 命令瀏覽wtmp 文件。

      utmp 和wtmp 都是二進制格式 (見utmp 的man頁);不幸的是,沒有特殊的程序無法查看它們。

      X和xdm

      META: X implements logins via xdm; also: xterm -ls

      存取控制

      用戶數據庫傳統上包含在/etc/passwd 文件中。有些系統使用影子口令shadow passwords,并把口令移到 /etc/shadow 中。許多計算機的場所可以用NIS或其他存儲用戶數據庫的方法共享帳戶;它們可能也自動從中心位置復制數據庫到所有其他計算機。

      用戶數據庫不僅包含口令,還包括有用戶的其他信息,比如其真實姓名、家目錄、登錄 shell等。這其他信息需要公用,使所有人都能讀。因此口令是加密保存的。這有缺點,任何人取得加密的口令,可以用不同的加密方法猜試口令,而不用試著真正登錄到計算機。影子口令試圖用把口令移動到其他文件的辦法避免這種情況,只有 root能讀(口令還是加密保存的)。 However, installing shadow passwords later onto a system that did not support them can be difficult.

      不管有沒有口令,確認系統中的所有口令是好的是很重要的,即不易猜。 crack 程序可用于破解口令;任何可以精確地找到的口令都不是好的口令。同時crack 可以為入侵者運行,也可由系統管理員運行以避免壞的口令。好的口令也可以被passwd 程序強制實現;這樣對CPU周期來說很有效,因為破解口令需要許多計算。

      用戶組數據庫保存在/etc/group 文件中;有影子口令的系統,是/etc/shadow.group 。

      root通常不能通過更多的終端或網絡登錄,只能通過列在/etc/securetty 文件中的終端登錄。這使得必須能夠物理存取這其中的一個終端。當然也可能通過任何終端用任何擁護登錄,然后使用su 命令變成root。

      Shell啟動

      當一個交互的登錄shell啟動時,它自動執行一個或更多預定義的文件。不同的shell執行不同的文件;更多的信息見每個shell的文檔。

      多數shell首先運行一些全局文件,例如,Bourne shell(/bin/sh ) 和它引出執行的/etc/profile ;另外,它們執行用戶家目錄中的.profile 。 /etc/profile 允許系統管理員建立一個公用的用戶環境,特別是建立PATH,以包括本地命令目錄。另外,.profile 允許用戶通過覆蓋按照自己的口味客戶化環境,如果必要,使用確省環境。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>