与 root 具有相同 uid 的另一个帐户会被提示为 root 设置新密码,而不是其本身

与 root 具有相同 uid 的另一个帐户会被提示为 root 设置新密码,而不是其本身

将操作系统从 5300-06 升级到 5300-11 后,发生了这种奇怪的行为。

我的系统还有另一个 unix 帐户,我们称之为“ABC”,特意将其 uid 配置为0作为一个及其所有当局。它已经这样运行了很多年并且工作得很好。但升级后,当abc的密码过期时,不再是成功登录后立即提示输入新密码,而是要求更改”" 的密码,它实际上是在更改 root 的密码而不是 abc 的密码。

如果我改变ABC的 uid 到另一个唯一的 id,它会成功地说更改ABC出现提示时的密码。

有很多理由让我无法改变ABC的 uid。所以我想找出的是,为什么会发生这种情况以及我该怎么做“使固定“吗?真的是操作系统升级造成的吗?

答案1

如果两个帐户具有相同的用户 ID,则根据定义它们是同一帐户。可以/etc/passwd(或其他用户数据库)中存在多个具有相同用户 ID 的行,但不建议这样做;他们是同一用户,有不同的登录方式。

您正在使用不受支持的功能。使用不受支持的功能的风险是,系统升级时该功能有时会中断。

过期密码通常不利于安全,因为它会导致用户选择较弱的密码或将其写在贴在显示器上的便利贴上。过期密码的唯一安全好处是最终锁定废弃的帐户。由于 abc 帐户可能是您在某种常规任务中使用的帐户,因此请勿使其过期。

您可能应该更改此设置,因为它很脆弱。更改它的内容取决于您使用 abc 帐户的目的(谁有密码,在什么情况下使用它,abc 的 shell 是什么,它是否存在于多台计算机上,...)。

答案2

系统更新很可能引入了与密码过期相关的脚本或其他功能,现在可以根据 UID 查找用户名,而不是从环境变量或其他来源收集用户名。正如 Gilles 指出的那样,拥有多个具有相同 UID 的用户名是很脆弱的。

如果你实在无法动弹ABC到另一个 UID,然后尝试查找与密码过期相关的文件/脚本,这些文件/脚本可能已被补丁更改。例如,检查/usr/sbin/userCommonTasks.最好能将其与补丁前的版本进行比较。您也可以检查一下/etc/security/users。也许在移动ABCroot 之上的条目可能会有所帮助。

任何修复都将是黑客攻击,因为一个 UID 具有多个用户名是一种黑客攻击,所以最终你只是在换取不稳定。但如果你能弄清楚发生了什么变化,应该可以让系统一瘸一拐地前进。

相关内容