1. 程式人生 > 實用技巧 >Linux中/etc下面passwd和shadow檔案介紹

Linux中/etc下面passwd和shadow檔案介紹

1./etc/passwd

root@root:~# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

admin:x:3:3:admin:/dev:/usr/sbin/nologin

從檔案中我們可以看到,/etc/passwd中一行記錄對應著一個使用者,每行記錄又被冒號(:)分隔為7個欄位,其格式和具體含義如下:
使用者名稱:口令:使用者標識號:組標識號:註釋性描述:主目錄:登入Shell


    1. 使用者名稱(login_name):是代表使用者賬號的字串。通常長度不超過8個字元,並且由大小寫字母和/或數字組成。登入名中不能有冒號(:),因為冒號在這裡是分隔符。為了相容起見,登入名中最好不要包含點字元(.),並且不使用連字元(-)和加號(+)打頭。
    2. 口令(passwd):一些系統中,存放著加密後的使用者口令字。雖然這個欄位存放的只是使用者口令的加密串,不是明文,但是由於/etc/passwd檔案對所有使用者都可讀,所以這仍是一個安全隱患。因此,現在許多Linux系統(如SVR4)都使用了shadow技術,把真正的加密後的使用者口令字存放到/etc/shadow檔案中,而在/etc/passwd檔案的口令欄位中只存放一個特殊的字元,例如“x”或者“*”。
    3. 使用者標識號(UID):是一個整數,系統內部用它來標識使用者。一般情況下它與使用者名稱是一一對應的。如果幾個使用者名稱對應的使用者標識號是一樣的,系統內部將把它們視為同一個使用者,但是它們可以有不同的口令、不同的主目錄以及不同的登入Shell等。取值範圍是0-65535。0是超級使用者root的標識號,1-99由系統保留,作為管理賬號,普通使用者的標識號從100開始。在Linux系統中,這個界限是500。
    4. 組標識號(GID):欄位記錄的是使用者所屬的使用者組。它對應著/etc/group檔案中的一條記錄。
    5. 註釋性描述(users):欄位記錄著使用者的一些個人情況,例如使用者的真實姓名、電話、地址等,這個欄位並沒有什麼實際的用途。在不同的Linux系統中,這個欄位的格式並沒有統一。在許多Linux系統中,這個欄位存放的是一段任意的註釋性描述文字,用做finger命令的輸出。
    6. 主目錄(home_directory):也就是使用者的起始工作目錄,它是使用者在登入到系統之後所處的目錄。在大多數系統中,各使用者的主目錄都被組織在同一個特定的目錄下,而使用者主目錄的名稱就是該使用者的登入名。各使用者對自己的主目錄有讀、寫、執行(搜尋)許可權,其他使用者對此目錄的訪問許可權則根據具體情況設定。
    7. 登入Shell(Shell):使用者登入後,要啟動一個程序,負責將使用者的操作傳給核心,這個程序是使用者登入到系統後執行的命令直譯器或某個特定的程式,即Shell。Shell是使用者與Linux系統之間的介面。Linux的Shell有許多種,每種都有不同的特點。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系統管理員可以根據系統情況和使用者習慣為使用者指定某個Shell。如果不指定Shell,那麼系統使用sh為預設的登入Shell,即這個欄位的值為/bin/sh。
2./etc/shadow
root@www:~# cat /etc/shadow

root:$6$X9iEgIhv$wGtrUhjiNRp72LgCTzC1qdi.myfSU9S5nqsfr.m1KInUFoeOUBN73AmMy5sTe91biJLdHgsoimZQzeD9EvGlv1:16769:0:99999:7:::

daemon:*:16547:0:99999:7:::

bin:*:16547:0:99999:7:::

sys:*:16547:0:99999:7:::

sync:*:16547:0:99999:7:::

games:*:16547:0:99999:7:::
man:*:16547:0:99999:7:::

檔案中欄位主要含義為:登入名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌


  1. “登入名”是與/etc/passwd檔案中的登入名相一致的使用者賬號
  2. “口令”欄位存放的是加密後的使用者口令字:

    1. 如果為空,則對應使用者沒有口令,登入時不需要口令;
    2. 星號代表帳號被鎖定;
    3. 雙歎號表示這個密碼已經過期了;
    4. $6$開頭的,表明是用SHA-512加密;
    5. $1$表明是用MD5加密;
    6. $2$是用Blowfish加密;
    7. $5$是用 SHA-256加密;
  3. “最後一次修改時間”表示的是從某個時刻起,到使用者最後一次修改口令時的天數。時間起點對不同的系統可能不一樣。例如在SCOLinux中,這個時間起點是1970年1月1日。

  4. “最小時間間隔”指的是兩次修改口令之間所需的最小天數。
  5. “最大時間間隔”指的是口令保持有效的最大天數。
  6. “警告時間”欄位表示的是從系統開始警告使用者到使用者密碼正式失效之間的天數。
  7. “不活動時間”表示的是使用者沒有登入活動但賬號仍能保持有效的最大天數。
  8. “失效時間”欄位給出的是一個絕對的天數,如果使用了這個欄位,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是一個合法的賬號,也就不能再用來登入了。