sudo 适用于密码为空的用户

sudo 适用于密码为空的用户

我希望 sudo 对于所有用户来说都是这样的:

  1. 如果用户当前有非空密码,则提示输入密码。

  2. 如果用户当前的密码为空,则提示输入密码并接受空字符串,或者根本不提示并允许。

这可能吗?现在,我有(1),但是对于具有空密码的用户来说,会发生这种情况:

$ sudo echo
Sorry, try again.
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts

或者,我可以关闭每个用户的密码检查,但这不是我想要的,因为用户可能稍后设置密码,然后 sudo 应该提示输入密码。

答案1

我认为这是不可能的,因为在 ( ) 将密码(空或其他)提供给 PAM 模块进行验证sudo之前,不会知道用户没有密码或者它是空字符串。sudo因此,在继续之前,它始终需要向用户请求密码。

NOPASSWD您在这里唯一的办法是使用 sudoers 文件中的选项配置不需要使用密码的用户。但这是非常不安全的,我建议您在继续使用该方法之前认真考虑您的最终目标是什么。

...所以我不关心安全...

首先设置一个“空白”密码

本 U&L 问答题为:如何创建没有密码的用户?建议使用这种对我有用的方法。

$ sudo passwd --delete samtest
Removing password for user samtest.
passwd: Success

现在测试一下

现在将这样的行添加到您的/etc/sudoers文件中。笔记:始终使用 编辑此文件sudo visudo

samtest ALL=(ALL)       NOPASSWD: ALL

现在尝试以用户“samtest”身份登录,无需任何密码。

$ su - samtest
$ 

现在尝试使用此帐户sudo

$ whoami
samtest

$ sudo echo

$ 

答案2

想知道为什么sudo通过控制台可以工作,而它却提示通过 SSH 输入密码?

至少在 Ubuntu 16.04 上,默认策略包含/etc/pam.d/common-auth

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

pam_unix(8)手册文档nullok_secure仅在使用/etc/securetty.如果不需要这种限制,可以替换nullok_securenullok.

或者,可以通过NOPASSWDsudoers 文件允许一个特定用户使用空密码,如 slm 所描述。

答案3

这是我的 PAM“auth”脚本中的一个错误:脚本在没有得到“ok”或“done”的情况下就终止了。

相关内容