/etc/shadow 和 /etc/passwd 格式兼容性

/etc/shadow 和 /etc/passwd 格式兼容性

所有 UNIX 和类 UNIX 系统上的文件 /etc/shadow 和 /etc/passwd 的格式是否相同或者是否存在显着差异?

我的意思是文件的语法,而不是文件位置或名称

答案1

据我所知,所有unix变体都有一个/etc/passwd具有传统布局的文件,以便应用程序直接读取该文件。文件中的每一行都包含以冒号分隔的记录,这些记录对应于struct passwd字段:

  1. 用户名(登录名)
  2. 加密密码(如果存在)
  3. 用户 ID(数字,十进制)
  4. 主要组 ID(数字,十进制)
  5. 盖科斯油田。除显示目的外,系统程序不使用该字段。它通常是一个以逗号分隔的字段列表,前三个是全名、办公室号码和电话号码。
  6. 主目录
  7. 登录外壳

不同系统之间存在的一件事是,您可以对语法有多大的自由度。例如,GNU libc(即 Linux)会忽略以#: 开头的行,它们是注释。 GNU libc 还忽略行首的空格,因此可以缩进。无效行可能会导致程序停止处理文件或跳到下一行。

大多数现代系统不再在第二个字段中存储加密密码。该字段的内容并不能可靠地指示用户是否设置了密码(即使您发现了这一点,这也不能可靠地指示用户是否可以登录,因为还有许多其他身份验证方法,例如SSH 密钥、一次性密码、生物识别、智能卡……)。

当密码不在 中时/etc/passwd,它们的位置取决于系统。这Unix 版罗塞塔石碑提到了许多 UNIX 变体。

  • Solaris 使用/etc/shadow,这已被包括 Linux 在内的其他人复制。 Linux 和 Solaris 影子文件具有相同的格式;我不知道其他具有名为 的文件的系统是否/etc/shadow使用相同的格式。
  • BSD系统有/etc/master.passwd,并且另外还有用于更快访问的数据库文件,由pwd_mkdb

请记住,/etc/passwd几十年来并不能保证包含完整的用户列表:用户可以来自其他数据库,例如新谢克尔(YP)或者LDAP。作为系统管理员,避免/etc/passwd直接编辑文件;使用vipw相反,如果您的系统提供了它(如果没有,请查阅您的手册以了解建议使用什么方法来修改用户数据库)。

我上面写的内容也适用于团体。中的字段/etc/groupstruct group成员:组名、密码(大部分未使用)、数字组 ID 和以逗号分隔的用户名列表(将该组作为辅助组的用户)。 Linux 有一个/etc/gshadow文件,但很少使用,因为组身份验证尚未广泛采用。

答案2

首先并非所有 UNIX 系统都使用 /etc/shadow,因此不相等:D BSD 使用 /etc/master.passwd,AIX 使用 /etc/security/passwd ...

相关内容