问题

问题

问题

我已经修改了 /etc/sudoers (通过 visudo)以允许自己在没有密码的情况下执行任何命令,但它不起作用。

所有类似的问题都不适合我。

当我使用 sudo 时仍然需要输入密码。

我的用户名和群组

❯ id -nG
guo network power libvirt autologin rfkill users video storage lp audio wheel sudo

系统

❯ uname -a
Linux lead-inspiron 6.2.1-arch1-1 #1 SMP PREEMPT_DYNAMIC Sun, 26 Feb 2023 03:39:23 +0000 x86_64 GNU/Linux

我的 /etc/sudoers

❯ sudo cat /etc/sudoers
root ALL=(ALL) NOPASSWD: ALL

guo ALL=(ALL) NOPASSWD: ALL
%wheel ALL=(ALL) NOPASSWD: ALL
%sudo ALL=(ALL) NOPASSWD: ALL
@includedir /etc/sudoers.d

我仍然无法不sudo输入密码。

顺便说一句,我的母语不是英语,所以对于任何错误我深表歉意。

答案1

使用您的/etc/sudoers,您应该已经授权该用户帐户guo以任何用户身份运行任何命令,而无需密码提示,三倍以上:因为guo是组的成员wheel并且sudo,该行将guo ALL=(ALL) NOPASSWD: ALL提供与该行与成员资格相结合的guo完全相同的访问权限%wheel ALL=(ALL) NOPASSWD: ALL在组中,或者作为与组中的成员资格相结合的wheel行。%sudo ALL=(ALL) NOPASSWD: ALLsudo

sudo也配置为读取 中的文件/etc/sudoers.d,并且最后的将应用与命令匹配的规则。所以匹配中一定有一些规则/etc/sudoers.d/*,而该规则显然没有标签NOPASSWD:

通过以sudo -l用户身份运行guo(或sudo -l -U guo以任何其他用户身份运行,并在需要时提供密码),您可以查看sudo将应用于该用户的所有选项和规则。

您应该重新排列您的sudoers规则,以便带有 标签的规则之一NOPASSWD:将成为最后的规则。例如:

root ALL=(ALL) NOPASSWD: ALL

@includedir /etc/sudoers.d
# guo ALL=(ALL) NOPASSWD: ALL  # not needed as guo is a member of both wheel and sudo groups
%wheel ALL=(ALL) NOPASSWD: ALL
%sudo ALL=(ALL) NOPASSWD: ALL

相关内容