不同的 UNIX 帐户可以共享用户名但拥有单独的密码吗?

不同的 UNIX 帐户可以共享用户名但拥有单独的密码吗?

在 UNIX 系统上,每个单独的用户帐户都有一个唯一的用户名。因此,密码并不是唯一的 - 每个不同的用户都可以拥有完全相同的密码。

我想做相反的事情。我想要一个用户名,但我希望该登录名有多个密码。根据密码的不同,您可能会登录到不同的帐户(使用不同的 UID),或者只是拥有不同的主目录。

目标是让两个独立的实体共享相同的用户名,但其文件是独立的 - 在这种情况下,不同 UID 之间的文件权限不太重要。

对于如何实现这一点或类似的事情,您有什么想法吗?是否滥用了 /etc/shadow 或 PAM?

这是可以通过编写 PAM 模块来完成的事情吗(我以前从未编写过。是不是非常非常难?)

答案1

我不相信这是可能的。您可以有两个具有/etc/passwd相同用户名但不同 UID 的条目,但系统可能会忽略第二个条目(或以某种方式行为不当);可以说这样的/etc/passwd文件会被认为是损坏的。

当您登录系统时,系统首先会提示您输入用户名。完成此操作后,系统会提示您输入密码,并检查输入的密码是否与该用户名对应的帐户的密码匹配。当您输入密码时,系统已经确定您尝试访问的帐户。

我想您可以修改系统的各个部分以获得您想要的行为,但是您必须替换几个不同的软件部分,包括任何验证和授权用户的内容(控制台登录、su、ssh 以及任何其他方法)已启用)。任何错误都可能会造成巨大的安全漏洞。

编辑 :根据评论,PAM 可能是执行此操作的方法。我对 PAM 不太熟悉,无法详细介绍。 (这仍然是一个非常糟糕的主意。)

答案2

我还没有仔细检查 API 文档以确保万无一失,但您可能可以找到一种使用 PAM 来完成此操作的方法。这可能并没有那么难。您甚至可以使用现有的 PAM 模块来完成此操作。

不是你应该的。有很多事情基本上假设名称映射到一个且仅一个用户 ID。例如,getpwnam在 C 库中。我当然不希望在我必须维护的任何系统上这样做;我预计随机破损将是常态。

此外,这并不能真正帮助您实现您/您朋友的目标:首先,如果您可以物理访问 PC,则获得 root 很容易;其次,它实际上不会欺骗任何人 - 很明显,事情会丢失(为什么文档 X 丢失,为什么没有 Web 浏览器历史记录,为什么没有 Firefox 扩展,为什么所有内容的修改和访问时间都一样)古代文件等)

答案3

我认为双重登录可以通过两个(或更多)PAM 身份验证后端来完成。例如,如果使用 LDAP 和正常的 passwd/shadow 用户登录,如果第一种方法的密码输入失败几次,则 PAM 会回退到第二种方法。

至少这是我几年前使用相同设置时遇到的情况。

我不能说这是否意味着将使用不同的 userID,但也许是的,因为 LDAP 可以将相同的用户名映射到不同的用户 ID。

但无论如何,这意味着每次你想登录到你的机器时,你都必须创建失败的登录(如果我没记错的话,有 2 到 3 次)。所以这不是那么舒服的黑客。

但是,这会产生与其他人上面提到的相同的问题,因为系统会搜索主后端中的所有内容,因此它会返回虚假登录的信息。

答案4

从理论上讲,这是可能的,但这通常是一个坏主意,这解释了为什么您找不到任何现成的程序。

您要求的是拥有具有相同公开可见身份的单独帐户。由于它们是单独的帐户,因此它们具有不同的真实身份。以这种方式呈现,它可能是明智的(使用用于权限和日志的私有身份)。我想不出在一般用户身份验证级别上存在任何内容。

但是,我认为这不能满足您的目标,其中一位用户会相信他们正在使用共享帐户。您需要做的不仅仅是假装您的用户名相同:您需要伪造文件共享(如果他们删除文件然后意识到您仍在使用它,夹具已启动)、登录时间等等在。此时,您不妨使用不同的用户名。

因此,为自己创建一个帐户,并创建另一个您只是假装使用的共享帐户。为了更好地分离,请在单独的虚拟机中创建这些帐户(例如使用LXC)。

相关内容