Linux 管理員手冊(6)--登入和登出(轉)

gugu99發表於2007-08-10
Linux 管理員手冊(6)--登入和登出(轉)[@more@]

  說明當一個使用者登入和登出時發生了什麼。較詳細地說明後臺程式的各種互動、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 (每天的簡訊息)的內容,並檢查電子郵件。可以在使用者家目錄中產生一個叫.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 允許使用者透過覆蓋按照自己的口味客戶化環境,如果必要,使用確省環境。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939989/,如需轉載,請註明出處,否則將追究法律責任。

相關文章