萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux--Linux 管理員手冊(6)--登錄和注銷在線閱讀

Linux--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網絡管理指南》。


copyright © 萬盛學電腦網 all rights reserved