Linux - 创建无密码用户(登录时无需密码提示)

Linux - 创建无密码用户(登录时无需密码提示)

我发现很多文章提到用户使用后没有密码passwd -d。虽然在我的某些系统上它确实可以工作(我可以su从非特权帐户访问它们而无需提供密码),但在某些系统上却不能。我尝试了两个*和空,但这些都不起作用:

lapsio@pi-car1:~ $ sudo useradd potato -p '*'
lapsio@pi-car1:~ $ su potato
Password: 
su: Authentication failure
lapsio@pi-car1:~ $ sudo passwd -d potato
passwd: password expiry information changed.
lapsio@pi-car1:~ $ su potato
Password: 
su: Authentication failure
lapsio@pi-car1:~ $

请注意,我是不是谈论空的密码(可以使用空字符串哈希设置)。我是不是也谈论锁定帐户。我预计在和中Password:根本不会出现任何提示的情况sugetty我能立即登录该帐户无需输入密码根本不。它似乎适用于旧系统。是否有一些系统级配置可以控制此行为?

为了说得非常清楚,我期待以下行为:

lapsio@pi-car1:~ $ su potato
potato@pi-car1:~ $ #I'm potato user here, without being asked for password

有点像当你从 root 启动时它会起作用,但我也su希望能够从任何非特权帐户启动。su并且在没有密码提示的情况下登录getty,就像您在 Arch liveCD 上登录 root 帐户一样。

是的我知道这是一种糟糕的安全做法,我知道这种做法的后果,但我仍然想知道该怎么做。

答案1

PAM 配置su通常位于,/etc/pam.d/su并且它可以使用该指令引用同一目录中的其他文件@include。在某些时候,将会有一行以 开头auth并提及pam_unix.so。在旧版本中,它可能包含一个nullok允许空密码的选项;现代发行版通常使用nullok_secure,仅当使用 中列出的 TTY 设备之一进行“身份验证”时才允许使用空密码/etc/securetty。此外,该选项的实施nullok可能会有所不同。

为了允许在su没有密码提示的情况下明确允许访问特定帐户,您可以添加如下行:

auth sufficient pam_succeed_if.so quiet_fail user = potato

笔记:user=和之间的空格potato很重要!)

为了在之前生效pam_unix.so,并且su仅使用该命令,该行应放置在/etc/pam.d/su 任何@include以 . 开头的指令或其他行auth

su然而,在不首先了解 PAM 配置如何工作的情况下,通过像这样的 PAM 配置创建快捷方式有点冒险。你的未指定的 Linux 发行版。使用前请仔细测试。

相关内容