use*_*ser 100
你的问题实际上有两个部分。
Linux 上的超级用户帐户是否始终具有 uid/gid 0/0?
是的。正如Rich Homolka在评论中指出的那样,内核中有代码在需要检查 root 用户时明确检查 uid 0,这意味着 root 始终至少具有uid 0。
uid 0 的用户帐户的名称总是
root吗?
No. root只是一个名称,列在 /etc/passwd 或其他一些身份验证存储中。您也可以调用该帐户admin,操作系统本身不会在意,但某些应用程序可能不太喜欢它,因为它们希望存在一个名为root. 在 *nix 上调用 uid 0 帐户root是一个非常严格的约定,但系统不需要它(尽管某些用户空间软件可能需要它,可能包括系统管理实用程序)。
还值得注意的是,正如Simon Richter所指出的,在 BSD 上,通常存在第二个uid 0 帐户,按照约定命名toor(“root”向后拼写,并且在词法上出现在 root按字母顺序排序的列表之后)。例如,FreeBSD 使用它为 root 用户提供自定义的 shell 设置,让 root 用户拥有一个默认的 shell,它保证存在于系统的 root 分区上(用于恢复目的)。
Ric*_*lka 17
1)管理员总是uid == 0。这是在内核中编码的。需要在内核中进行一些编码才能改变这一点。这没有太多意义,所以没有完成。例如,对于共享相同 NFS 的其他 Unix 来说,这将是不一致的。
2) uid 0 不一定映射到 root。最好的例子是 FreeBSD。它有两个 uid == 0 帐户,区别在于 shell。root 有 shell /bin/sh,这是一个简单的 shell,当你的磁盘坏了并且你需要 fsck /usr 时很有用。toor 使用 tcsh,这在非紧急情况下更有用,因为它具有历史等内容。
另一个更个人化的例子;我有一份工作,他们在 NIS 上有一个 root equiv(即 uid=0)帐户。密码,空白!因为新的系统管理员不记得机器上的 root 密码。出于显而易见的原因,我对此大喊大叫(根据定义,NIS 密码无法隐藏其空白)。我对这个帐户不满意。
确实不是给 uid 0 的系统是 root,而是你。您可以使用 passwd 文件或其他命名目录(NIS、ldap)更改它,但它没有被编译。尽管您应该在 /etc/passwd 中至少有一个 uid 0 帐户,因为当您真正需要它时可能没有网络.
所以 root 总是 uid 0,但 uid 0 不一定总是 root。
| 归档时间: |
|
| 查看次数: |
128035 次 |
| 最近记录: |