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

來源:互聯網
上載者:User

說明當一個使用者登入和登出時發生了什麼。較詳細地說明後台進程的各種互動、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 允許使用者通過覆蓋按照自己的口味客戶化環境,如果必要,使用確省環境。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.