Linux管理員手冊(6)--登陸和註銷

說明當一個用戶登陸和註銷時發生了什麼。較詳細地說明後臺進程的各類交互、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 容許用戶經過覆蓋按照本身的口味客戶化環境,若是必要,使用確省環境。
相關文章
相關標籤/搜索