![/etc/passwd 详细信息混乱](https://linux22.com/image/1311173/%2Fetc%2Fpasswd%20%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF%E6%B7%B7%E4%B9%B1.png)
我知道 /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 的评论 - 我询问为什么出现逗号的原因是,尽管没有 gecos 字段的其他详细信息,但 /etc/passwd 中没有其他用户帐户似乎具有相同的结构。
答案1
Gecos 字段不仅包含用户名,还包含有关该用户的信息,例如:
- 真正的名字
- 房间号
- 电话号码
- 等等...
如果我们看看维基百科文章的示例,这变得清晰起来:
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”的全名。)