具有相同 UID 的多个 *NIX 账户

具有相同 UID 的多个 *NIX 账户

我很好奇是否存在标准的预期行为,以及在 Linux/Unix 上创建具有相同 UID 的多个帐户是否被视为不良做法。我在 RHEL5 上对此进行了一些测试,其行为符合我的预期,但我不知道我是否在使用这个技巧来冒险。

举个例子,假设我有两个具有相同 ID 的帐户:

a1:$1$4zIl1:5000:5000::/home/a1:/bin/bash
a2:$1$bmh92:5000:5000::/home/a2:/bin/bash

这意味着:

  • 我可以使用自己的密码登录每个帐户。
  • 我创建的文件将具有相同的 UID。
  • 诸如“ls -l”之类的工具会将 UID 列为文件中的第一个条目(在本例中为 a1)。
  • 我避免两个帐户之间出现任何权限或所有权问题,因为它们实际上是同一个用户。
  • 我对每个帐户进行登录审核,因此我可以更细致地跟踪系统上发生的情况。

我的问题是:

  • 这种能力是经过设计而来的吗?还是它只是碰巧起作用的方式?
  • 这在 *nix 变体中是否一致?
  • 这是公认的做法吗?
  • 这种做法是否会带来意想不到的后果?

请注意,这里的想法是将其用于系统帐户而不是普通用户帐户。

答案1

我的想法:

这种能力是经过设计而来的吗?还是它只是碰巧起作用的方式?

这是经过设计的。自从我开始使用 *NIX 以来,您已经能够将用户放在公共组中。能够让 UID 相同而不会出现问题只是一种预期结果,就像所有事情一样,如果管理不当,可能会带来问题。

这在 *nix 变体中是否一致?

我相信是这样。

这是公认的做法吗?

是的,按照通常以某种方式使用的方式被接受。

这种做法是否会带来意想不到的后果?

除了登录审核之外,您没有其他选择。除非您一开始就想要这个。

答案2

它可以在所有的 Unix 上运行吗?是的。

这是个好方法吗?不是。还有其他更好的方法。例如,正确使用 unix 组和严格控制的“sudo”配置可以实现相同的效果。

我只见过一个地方使用这个方法没有问题。在 FreeBSD 中,传统上会创建第二个 root 帐户,称为“toor”(root 的反向拼写),其默认 shell 为 /bin/sh。这样,如果 root 的 shell 出现问题,您仍然可以登录。

答案3

我无法为您的问题提供标准答案,但据传闻,我的公司多年来一直对 root 用户这样做,从未遇到任何问题。我们创建了一个“kroot”用户(UID 0),其存在的唯一原因是将 /bin/ksh 用作 shell,而不是 /bin/sh 或 bin/bash。我知道我们的 Oracle DBA 对他们的用户做了类似的事情,每个安装有 3 或 4 个用户名,所有用户名都具有相同的用户 ID(我相信这样做是为了让每个用户都有单独的主目录。我们在 Solaris 和 Linux 上这样做至少十年了。我认为它按设计工作。

我不会对普通用户帐户这样做。正如您所说,初次登录后,日志文件中的所有内容都会恢复为名字,因此我认为一个用户的操作可能会在日志中伪装成另一个用户的操作。但对于系统帐户,它效果很好。

答案4

这种能力是经过设计而来的吗?还是它只是碰巧起作用的方式?

就是这样设计的。

这在 *nix 变体中是否一致?

是的,应该如此。

这是公认的做法吗?

取决于你的意思。这种事情回答了一个非常具体的问题(请参阅 root/toor 帐户)。在其他地方,你只会在将来遇到一个愚蠢的问题。如果你不确定这是否是正确的解决方案,那么它可能就不是。

这种做法是否会带来意想不到的后果?

一般习惯将用户名和 UID 视为可互换的。正如其他一些人指出的那样,登录/活动审核将不准确。您还需要检查任何相关用户相关脚本/程序的行为(您的发行版的 useradd、usermod、userdel 脚本、任何定期维护脚本等)。

您想要通过此方法实现什么目的,而将这两个用户添加到新组并授予该组所需的权限则无法实现此目的?

相关内容