
我知道 /etc/passwd 檔案由多行用戶帳戶組成,其中包含 7 個字段,即:
username:encrypted password or token:userid:groupid:gecos:home directory:default shell
然而,一些用戶的詳細資訊顯示為
username:x:1000:1000:username,,,:/home/username:/bin/bash
逗號代表什麼?
編輯
根據下面 Daniel 的評論 - 我問為什麼出現逗號的原因是因為 /etc/passwd 中沒有其他用戶帳戶似乎具有相同的結構,儘管沒有 gecos 字段的其他詳細信息。
答案1
Gecos 欄位不僅包含使用者名,還包含有關該使用者的資訊 fe:
- 真正的名字
- 房號
- 電話號碼
- 等等...
如果我們看一下維基百科文章的範例,這就變得清楚了:
jsmith:x:1001:1000:Joe Smith,Room 1007,(234)555-8910,(234)555-0044,email:/home/jsmith:/bin/sh
第五個字段稱為 Gecos 字段,是描述個人或帳戶的評論。通常,這是一組逗號分隔的值,包括使用者的全名和聯絡資訊。
所以您看到的是一組空的使用者資訊。這些資訊在文件中的處理和設定方式很可能因係統而異passwd
。
答案2
正如對原始問題的評論所說:為什麼我的 /etc/passwd 檔案中會有奇怪的逗號?和http://en.wikipedia.org/wiki/Gecos_field解釋什麼這些字段是。
回答「他們為什麼會出現」這個問題一些使用者而不是其他人」:此資訊通常由將使用者新增至系統的工具所建立。對於使用者來說,例如「房間號」是沒有意義的sshd
,因此這些欄位在創建過程中會被忽略這些使用者。
但為什麼我會看到例如
mysql:x:107:109:MySQL Server,,,:/var/lib/mysql:/bin/false
在我的etc/passwd
?該用戶可能是由為了方便起見而使用的腳本adduser
(存在於許多常見系統上)而不是更底層的useradd
工具(我認為命名可能更好)創建的,並adduser
自動創建 Gecos 佔位符。或者,它可能是用戶創建時有意識的選擇,只是為了遵守 Gecos 格式以實現一致性,但我認為在這些情況下這大多是不必要的。
那麼為什麼我的普通用戶的 Gecos 欄位也是空的?因為我根本沒有填寫房號等。當我創建該用戶時(我什至不知道我在系統安裝過程中是否有這個選擇 - 我不這麼認為)。
(附註:該系統意味著大多數工具都會錯誤地解釋全名,例如“Daniel Andersson,PhD”。)