防止在Linux中将UID = 0分配给任何其他用户

我想知道是否有办法阻止将UID = 0分配给除root以外的任何其他帐户。

你不能。 “root”只是一个名称,创build一个UID为0的帐户“bennybunny”是完全有效的。但是,这只适用于已经以UID 0运行的进程。

对于UNIX / Linux内核来说,重要的是数字。 在用户空间中,通过libc,有映射将数字映射到名称。 顺便说一句,有几个名字映射到相同的数字是完全可能的和有效的。

我能想到的最简单的方法是使/ etc / passwd成为只读文件。 由于这样做有明显的阻碍任何创build或更新帐户的副作用,我不会这样做。

或许你不应该考虑uid 0,而应该看看SELinux ,它提供了强制性的访问控制 ,甚至root也不能做任何事情。