/etc/passwd 详细信息混乱

/etc/passwd 详细信息混乱

我知道 /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”的全名。)

相关内容