如何sudo
在 RHEL(Fedora、CentOS 等)或 Ubuntu 发行版上设置无密码访问?(如果各个发行版都一样,那就更好了!)
设置:个人和/或实验室/培训设备,无需担心未经授权的访问(即,设备位于非公共网络上,并且任何/所有用户都完全受信任,并且设备的内容是“普通的”)。
答案1
我对这个答案的先前版本做了一些改动。我建议以下三种方法之一:
sudo
建议:创建一个无需密码即可使用的用户组:%wheel ALL = (ALL) NOPASSWD: ALL
并将人们可能使用的所有用户帐户添加到该组。
安全但烦人:向
sudo
明确的用户列表授予无密码访问权限:User_Alias EVERYONE = user1, user2, user3, ... EVERYONE ALL = (ALL) NOPASSWD: ALL
sudo
但每次您想要更改具有访问权限的用户时,都必须编辑配置。不安全感:如果你真的想付出全部用户帐户无密码 sudo 访问,感谢麦地那, 你可以写
ALL ALL = (ALL) NOPASSWD: ALL
在每种情况下,代码块中的行都应添加到/etc/sudoers
(visudo
当然,使用命令可以确保您没有犯任何语法错误),或者/etc/sudoers.d
如果您的系统设置为在配置中包含这些文件,则应添加到文件下sudo
(感谢塞蒂乌斯)。请注意,sudo 配置中的行是按从上到下的顺序处理的,后面的行将覆盖前面的行,因此,如果您想避免其他内容覆盖此行,则应将其放在最后(感谢艾伦)。
我建议使用群组而不是sudo
向所有用户授予无密码访问权限的原因(尽管我知道这个问题是这么问的),是因为,尤其是在现代社会,系统上运行的其他服务的入侵会带来重大的安全风险。当然,你也许可以完全信任所有有访问权限的真实用户,但你信任邮件服务器吗?系统记录器?Docker 守护程序?机器上运行的其他服务?更重要的是,你信任互联网上可能利用这些服务中的漏洞来执行操作的随机人员吗?向用户授予无密码sudo
访问权限全部用户意味着,任何人只要以允许他们执行命令的方式侵入这些服务之一,就可以直接以 root 身份运行命令,这可能意味着系统完全被攻陷。诚然,拒绝他们访问sudo
并不一定意味着他们无论如何都不能攻陷系统,但至少可以让他们更难攻陷。
当然,不同的系统有不同的需求,你很可能处于这样一种情况:能相信没有人会以错误的方式访问这台计算机,或者即使有人这样做了,也不会造成太大的伤害。但至少要停下来想一想。如果有疑问,最好默认限制访问因为有时你会发现你并不像你想象的那样信任你的系统,而如果真的出了问题,那就太晚了。
答案2
我尝试了上述解决方案,但无济于事。以下解决方案对我有用编辑 /etc/sudoers 文件并添加以下行
username ALL=(ALL) NOPASSWD: ALL
这钥匙是在最后一行后面添加
#includedir /etc/sudoers.d
答案3
我尝试了本页上的所有答案,但没有任何有用的结果。最终我明白了,使用这个命令列出你的 sudo 权限:
sudo -l
这应该会给你如下输出:
User gmurphy may run the following commands on this host:
(root) NOPASSWD: ALL
(ALL) ALL
它显示我配置了 root 权限,但我仍属于与 sudo 规则匹配的组 (admin),该规则要求输入密码 (“(ALL) ALL”)。这迫使 sudo 提示我。有问题的规则是管理员用户:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
一旦我注释掉它,我就可以不用密码进行 sudo 了。我希望这对其他人有用。
答案4
还有另一种方法可以做到这一点,而无需触及 sudoers 文件。
编辑
/etc/pam.d/su
并取消注释以下行:auth sufficient pam_wheel.so trust use_uid
将用户添加到
wheel
组。