问题
我已经修改了 /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: ALL
sudo
但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