为什么要求 root 是 /etc/passwd 中的第一个条目?

信息安全 验证 Unix
2021-08-21 23:09:49

安全策略有时要求 root 是 /etc/passwd 文件中的第一个条目。是否有要求这样做的正当理由,还是只是因为 root 帐户是第一个创建的帐户而这样做?

我知道有些地方曾经使用具有相同数字 UID 的多个帐户,这在任何方面都是不好的做法,对于 root 来说更糟糕。在这些情况下,ls(1) 使用它找到的与数字 UID 匹配的名字,因此确保 root 是第一个将意味着所有 UID 0 帐户所有权在目录列表中显示为“root”。但是,更常见的是禁止创建具有相同 UID 的多个帐户,因此作为要求这样做的理由并没有多大意义。

更新:一位同事告诉我,某些 Unix 操作系统的旧版本使用 /etc/passwd 中的第一个条目来验证对单用户模式的访问。现代操作系统对 root 帐户进行身份验证,无论其在 /etc/passwd 和 /etc/shadow 中的位置如何。我很想知道何时对主要的 Unix 平台进行了此更改;有人告诉我这是 Y2K 之前的问题,所以 Linux 可能从未遇到过这个问题。

1个回答

它与早期整体掩盖后期整体的潜力有关:

请注意,/etc/passwd 中较早的条目优先于或屏蔽具有相同用户名或相同用户 ID 的后续条目。因此,请注意示例中守护程序和同步用户名(具有相同用户 ID)的条目顺序。确保不要在自己的文件中更改此顺序。

http://uw714doc.sco.com/en/NET_nis/nisC.passwd.html

因此,如果您可以在 /etc/passwd 文件的开头注入一个名为“root”的用户,则可能会造成一些破坏。