你是否知道,在Linux系統中,每個使用者都有對應的記錄行存在於/etc/passwd檔案中,這些記錄行包含了使用者的一些基本屬性。作為一個系統管理員,頻繁進行對該文件的改動以管理使用者是很常見的工作之一。
它的內容類似下面的例子:
從上面的例子我們可以看到,/etc/passwd中一行記錄對應著一個用戶,每行記錄又被冒號(:)分隔為7個字段,其格式和具體含義如下:
使用者名稱:口令:使用者識別號碼:群組識別號碼:註解性描述:主目錄:登入Shell
"使用者名稱"
代表使用者帳號的字串。通常長度不超過8個字符,並且由大小寫字母和/或數字組成。登入名稱中不能有冒號(:),因為冒號在這裡是分隔符號。為了相容起見,登入名稱中最好不要包含點字元(.),且不使用連字號(-)和加號( )打頭。
「口令」
#在某些系統中,存放著加密後的使用者口令字。雖然這個欄位存放的只是用戶口令的加密串,不是明文,但由於/etc/passwd檔案對所有用戶都可讀,所以這仍是一個安全隱患。因此,現在許多Linux系統(如SVR4)都使用了shadow技術,把真正的加密後的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如“x”或“*”。
「使用者識別號碼」
#是一個整數,系統內部用它來識別使用者。一般情況下它與使用者名稱是一一對應的。如果幾個用戶名對應的用戶識別號碼是一樣的,系統內部將把它們視為同一個用戶,但是它們可以有不同的口令、不同的主目錄以及不同的登入Shell等。通常使用者識別號碼的值域為0~65535。0是超級使用者root的識別號,1~99由系統保留,作為管理帳號,一般使用者的識別號碼從100開始。在Linux系統中,這個界線是500。
「群組識別號碼」
#欄位記錄的是使用者所屬的使用者群組。它對應著/etc/group檔案中的一筆記錄。
「註解性描述」
#欄位記錄著使用者的一些個人狀況,例如使用者的真實姓名、電話、地址等,這個欄位並沒有什麼實際的用途。在不同的Linux系統中,這個欄位的格式並沒有統一。在許多Linux系統中,這個欄位存放的是一段任意的註解性描述文字,用做finger指令的輸出。
「主目錄」
#也就是使用者的起始工作目錄,它是使用者登入系統之後所處的目錄。在大多數系統中,各使用者的主目錄都被組織在同一個特定的目錄下,而使用者主目錄的名稱就是該使用者的登入名稱。
各使用者對自己的主目錄有讀、寫、執行(搜尋)權限,其他使用者對此目錄的存取權限則依具體情況設定。使用者登入後,要啟動一個進程,負責將用戶的操作傳給內核,這個進程是用戶登入系統後運行的命令解釋器或某個特定的程序,即Shell。 Shell是使用者與Linux系統之間的介面。 Linux的Shell有許多種,每種都有不同的特點。
常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。
系統管理員可以根據系統狀況和使用者習慣為使用者指定某個Shell。如果不指定Shell,那麼系統使用sh為預設的登入Shell,也就是這個欄位的值為/bin/sh。使用者的登入Shell也可以指定為某個特定的程式(此程式不是一個命令解釋器)。
利用這一特點,我們可以限制用戶只能運行指定的應用程序,在該應用程式運行結束後,用戶就自動退出了系統。有些Linux系統要求只有那些在系統中登記了的程式才能出現在這個欄位中。系統中有一類使用者稱為偽使用者(psuedousers),這些使用者在Linux /etc/passwd檔案中也佔有一筆記錄,但是不能登錄,因為它們的登入Shell為空。它們的存在主要是方便系統管理,滿足相應的系統程序對文件屬主的要求。常見的偽用戶如下圖所示。
偽使用者意義
#包括:
bin 擁有可執行的使用者命令檔
sys 擁有系統檔案
adm 擁有帳戶檔案
uucp UUCP使用
lplp或lpd 子系統使用
nobody NFS使用
擁有帳戶檔案
還有一些標準的偽用戶,如audit、cron、mail、usenet等,在Linux系統中也有對應的進程和檔案。然而,由於Linux /etc/passwd檔案是所有使用者都可讀的,如果使用者的密碼太簡單或規律明顯,就容易被攻擊者破解。因此,在安全性要求較高的Linux系統中,加密後的口令字被單獨儲存在/etc/shadow檔案中,並且只有超級使用者擁有該檔案的讀取權限,這樣就保護了使用者密碼的安全性。
以上是詳解Linux中/etc/passwd文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!