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

rko*_*egi 5 users shadow

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

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

Gil*_*il' 5

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

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

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

\n\n

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

\n\n

当密码不在 中时/etc/passwd,它们的位置取决于系统。Rosetta Stone for Unix提到了许多 unix 变体。

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

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

\n\n

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

\n