/etc/group 中的第二個欄位是什麼意思?
範例
/etc/group
文件包含以下條目:root:*:0: adm:!:4:logcheck antoine:x:1000:
我讀過的手冊頁(Debian 和 OSX)說第二個欄位是儲存組密碼。由於它們很少使用,因此通常會在其中放置一個星號
*
或 a ,而不是將其留空。x
shadow
手冊頁還說第二個欄位應該儲存函式的結果crypt
。如果儲存了無效的結果(例如*
或!
),則表示密碼不能用作驗證方法。這也適用於
group
文件嗎?為什麼我的group
文件中有 3 個不同的字元都具有相同的含義?我可以安全地將所有更改為*
嗎?
您認為
!
,*
orx
在這裡有特殊含義,因此擔心它們之間可能存在一些區別。事實上,選擇這些角色僅僅是因為它們很突出,至少在西方人眼中是這樣。這些字元表示缺失值、異常情況或警告。你可以放在
boogabooga
這裡並產生完全相同的效果。這是因為在 Unix 類型系統上處理密碼的方式。當系統收到密碼條目時,它會對其進行雜湊處理並將其與儲存的雜湊值進行比較。因此,這裡重要的是您使用了一些不可能是有效密碼雜湊的字元或字元序列。(由於顯而易見的原因,它也不能包含冒號。)
儘管從核心作業系統的角度來看,這些字元之間沒有區別,但還是有一些約定:
- 當 Linux
pwconv(8)
程序看到x
時,它的意思是“我已經將此公共密碼雜湊移動到影子密碼文件中”。這在實踐中並不是一個重要的案例,因為現在轉換為(或者,天堂幫助你,來自)影子密碼的日子已經過去了。
- 如果您使用
usermod -L
orpasswd -l
鎖定使用者,!
則具有特殊含義,/etc/shadow
因為這是“打破此雜湊使其不再匹配”的約定。向儲存的雜湊添加任何其他字元也會破壞它。違反此約定只會阻止或
usermod -U
解鎖使用者的登錄。同樣正確的是,由於您通過添加虛假字元手動鎖定它,因此您可以通過刪除它手動解鎖它。passwd -u
然而,就這個問題而言,所有這些都只是瑣事。沒有
groupmod -L
orgpasswd -l
,因此在 中沒有!
約定/etc/group
。更多瑣事:如果您要手動鎖定使用者帳戶,則應遠離該
[A-Za-z0-9/\]
集合,因為這些是散列的合法字元。這是在此處usermod
使用而不是.!``x
我認為規範化所有密碼欄位沒有任何問題
/etc/group
,如果這讓你感覺更好的話。通過這樣做,您已經在說您很樂意手動破解這些文件,因此您可能不是那種使用關心區別的工具的人。無論如何,更改不會對日常系統操作產生影響。