我发现很多文章提到用户在使用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:提示符在su和getty中都没有出现,而I能够立即登录到该帐户,<#>without被要求输入密码。它似乎适用于较旧的系统。是否有控制此行为的系统级配置?
为了表明这一点,我期待着以下行为:
lapsio@pi-car1:~ $ su potato
potato@pi-car1:~ $ #I'm potato user here, without being asked for password有点像当您从根su时工作,除了我希望能够从任何非特权帐户su以及。并在没有查看密码提示的情况下从getty登录,就像您登录到Arch liveCD上的根帐户一样。
是的,我知道这是可怕的安全实践,我知道这种做法的后果,但我仍然想知道如何做到这一点。
发布于 2020-02-10 05:34:38
su的PAM配置通常位于/etc/pam.d/su,它可以使用@include指令引用同一目录中的其他文件。在某个时候,将有一行以auth开头,并提到pam_unix.so。在较早的发行版中,它可能包括一个允许空密码的nullok选项;现代发行版通常使用nullok_secure,只有在使用/etc/securetty中列出的一个TTY设备进行“身份验证”时才允许空密码。此外,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的S配置创建这样的快捷方式有点冒险,如果不首先了解PAM配置应该如何在未指定的Linux发行版中工作,那么在使用之前要仔细测试。
https://unix.stackexchange.com/questions/566513
复制相似问题