FlossDoc: 请协力 GPLv3 的中文翻译工作。

File:/etc/shadow

FlossDoc,自由中文開源知識庫

< File: | etc
Jump to: navigation, search

檔案 /etc/shadow 大部份 Unix/Linux 系統使用 shadow password 時儲存使用者密碼和相關安全資料的檔案。和 /etc/passwd 不同,它的檔案權限 (file mode) 一般會設為只有超級使用者才可以讀取,以減低使用者密碼受到攻擊的機會。

其格式是很簡單的文字檔,一般可以直接使用任何文字編輯器修改,但為安全起見,請使用系統提供的工具如 passwd、chage 和 vipw -s 等改變此檔案的內容。

目录

結構與內容

shadow 的格式和 /etc/passwd 差不多,每一列代表一個使用者。欄與欄之間以冒號 (“:”) 分隔。每一列的格式如下:

username:encrypted-password:last-change:mindays:maxdays:warndays:inactivedays:expire-date:reserved

以下是個典型 shadow 檔案的內容:

root:$6$x6N8vnBZ$JxRu6uVs8RmCH0eVBBXnFIxDjYQNGheXbxsEfr2paBGEUMtEi/1q95WIiA4pF0.3D.xo83CNaDyNHLDXRVLhl1:14770:0:99999:7:::
daemon:*:14728:0:99999:7:::
bin:*:14728:0:99999:7:::
sys:*:14728:0:99999:7:::
sync:*:14728:0:99999:7:::
games:*:14728:0:99999:7:::
man:*:14728:0:99999:7:::
lp:*:14728:0:99999:7:::
mail:*:14728:0:99999:7:::
www-data:*:14728:0:99999:7:::
nobody:*:14728:0:99999:7:::
backup:*:14728:0:99999:7:::
list:*:14728:0:99999:7:::
jrandom:$1$2ttTGtcK$/vrDDgJUgbXRl.YbnOM8o1:12800:0:99999:7:::
john:$1$a2cdx7tc$okBGwL7FcJ0sWnTBaZ6t/.:12714:0:99999:7:::
mary:$6$9mXh3gNo$0Y6RoPw6LJvoDqJPEea4huU8Luu9QmCMFzglH7pZcsFFkRx.ikE88nelrbRC0.jwiT6ADLYyJtpwr1W.xyIH.0:14731:0:99999:7:::
peter:$6$CONbfu09$1lq56vt9zaHrpth3Gq.m3ZnxD.h1PGLmNUhqtIwBx6NhUk.9II6CHm/bBPURMqpCUbnJ4goZDZ9pkgA72of2r/:14789:0:99999:7:::

每一欄的用途以下:

  1. 使用者名稱 (Username) - 登入和識別使用者的名稱。
  2. 已加密的密碼 (Encrypted password) - 如其名,這欄是存放已加密的使用者密碼。特別留意如果這欄是空的,表示無需輸入密碼就可以登入這使用者。這在正常系統是絕對不可能出現的。唯一原因就是系統已被人入侵。如果這欄第一個字元為嘆號 “!”或星號 “*” 表示此帳戶已被鎖定不能登入。詳見 《密碼演算法》
  3. 密碼最後更改日期 (Last change) - 由 Epoch 日期 1970 年 1 月 1 日至密碼最後更改日期的日數。每次密碼被更改時系統會自動更新此值詳情請參閱 《強迫使用者定期更改密碼 - 設定密碼最後更改日期》
  4. 密碼有效最小日數 (Minimum days) - 密碼由最後更改後最小要多少日才可以被更改。一般預設為 0 日,即使用者可以隨時更改密碼。詳情請參閱 《強迫使用者定期更改密碼 - 設定密碼最短有效期》
  5. 密碼有效最大日數 (Maximum days) - 密碼由最後更改後最長多少日後要被更改。詳情請參閱 《強迫使用者定期更改密碼 - 設定密碼最長有效期》
  6. 警告日數 (Warning days) - 密碼過期前多少日前發出警告。一般預設為 7 日。詳情請參閱 《強迫使用者定期更改密碼 - 設定密碼有效期警告日數》
  7. 不活躍日數 (Inactive days) - 密碼過期後使用者多少日無登入會被認為是不活躍並鎖定帳戶。詳情請參閱 《強迫使用者定期更改密碼 - 設定使用者不活躍限期》
  8. 有效日期 (Expire date) - 指定帳戶過期的日期,過此日子後帳戶將被銷定而不能登入。以由 Epoch 日期 1970 年 1 月 1 日至過期日期的日數來表示。詳情請參閱 《設定使用者帳戶有效日期》
  9. 保留 (Reserved) - 保留作將來使用

密碼演算法

如果密碼項首個字元為英文字母、數目字、點號 (".") 或錢線 ("/") (例如: QV0K5p9TdvUIQ,表示密碼使用傳統的 Unix crypt。首兩個字元 ("QV") 為 12 位元的 salt,而餘下 11 字元為密碼的 unix crypt hash。unix crypt 演算法現在己非常弱的演算法,應該已被淘汰。

如果密碼項首個字元為錢號 ("$")' (例如: $1$2ttTGtcK$/vrDDgJUgbXRl.YbnOM8o1,表示密碼使用較新的格式。此格式分三欄,每欄以錢號分隔。首欄為演算法識別碼 algorithm identifier[1]:

  • 1 - 以 MD5 為基礎的 cryptographic hash function,由 Poul-Henning Kamp 設計。主要將使用者的密碼和隨機產生的 salt 合併並計算其 MD5 hash 值,然而再將使用者的密碼、salt 和上次計算出來的 MD5 hash 值合併並再計算其 MD5 hash 值,重覆相同運算一千次,最終的 hash 值就是密碼 hash。
  • 2/2a (很少用) - 以 Blowfish 為基礎的 cryptographic hash function,由 Niels Provos 和 David Mazieres 設計並在 1999 年 USENIX 發表
  • 5 - 以 SHA-256 為基礎的 cryptographic hash function,由 Red Hat 的 Ulrich Dreppr 設計。
  • 6 - 以 SHA-512 為基礎的 cryptographic hash function,由 Red Hat 的 Ulrich Dreppr 設計。

第二欄為 salt ("2ttTGtcK"),第三欄則為密碼 hash ("/vrDDgJUgbXRl.YbnOM8o1")

相關工具

  • passwd - 更改使用者密碼
  • chage - 更改使用者帳戶過期和密碼有效期設定
  • vipw -s - 編輯 /etc/shadow 檔案

相關檔案

  • /etc/passwd - 記錄 Unix/Linux 使用者資料的檔案。
  • /etc/group - 記錄 Unix/Linux 使用者群組的檔案。
  • /etc/gshadow - 大部份 Unix/Linux 系統使用 shadow password 時儲存使用者群組密碼和相關資料的檔案。

參考資料

  1. Wikipedia Library Function crypt(3). crypt (Unix). (於 2010-06-29 日讀取)

請參看

外部連結

Personal tools