如何在 Linux 上设置无密码的“sudo”?

如何在 Linux 上设置无密码的“sudo”?

如何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/sudoersvisudo当然,使用命令可以确保您没有犯任何语法错误),或者/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组。

相关内容