题 如何在Linux上设置无密码`sudo`?


如何无密码 sudo 可以在RHEL(Fedora,CentOS等)或Ubuntu发行版上设置访问权限吗? (如果在发行版中它们是相同的,那就更好了!)

设置:个人和/或实验室/培训设备,无需担心未经授权的访问(即设备在非公共网络上,任何/所有用户都完全信任,设备的内容是“普通的”) 。


136
2017-07-15 04:09




来自@Richipal的答案是以最少的努力发挥最佳效果:似乎sudoers规则以相反的顺序应用。 - a1an
@ a1an规则的应用顺序与sudoers文件中列出的顺序相同,并且在应用它们时,它们会相互覆盖。因此,如果我不想要一个规则进行更改,我会将它放在文件的末尾,以便它在最后应用,并且不能被覆盖。 - rsjethani


答案:


编辑 感谢麦地那的评论:根据手册页,你应该能够写

ALL            ALL = (ALL) NOPASSWD: ALL

允许所有用户在没有密码的情况下运行所有​​命令。


作为参考,我将离开我之前的答案:

如果添加表单行

%wheel         ALL = (ALL) NOPASSWD: ALL

/etc/sudoers (使用 visudo 当然是命令,它会让小组中的每个人 wheel 无需提供密码即可运行任何命令。所以我认为最好的解决方案是将所有用户放在某个组中,然后在其中添加一行 sudoers  - 显然你应该更换 wheel 与您使用的实际组。

或者,您可以定义用户别名,

User_Alias     EVERYONE = user1, user2, user3, ...

并使用:

EVERYONE       ALL = (ALL) NOPASSWD: ALL

虽然你必须更新 /etc/sudoers 每次添加或删除用户时。


151
2017-07-15 04:25



不 ALL 工作而不是 * 指定所有用户?请参阅中的示例 sudoers(5)。 - medina
@medina:就是这样,我在阅读手册时错过了。我会编辑。 - David Z
在Ubuntu下,在/etc/sudoers.d下创建一个文件并将这些条目放入其中然后它将阻止你编辑sudoers - Xetius
在CentOS7中,此条目默认存在,只是注释掉了。 - killjoy
只能通过复制/粘贴在centOS中使用它,每次尝试直接键入配置都失败。但结果似乎相同,除了空格...... - MUY Belgium


我试过上面的解决方案无济于事。 以下解决方案适合我 编辑/ etc / sudoers文件并添加以下行

username ALL=(ALL) NOPASSWD: ALL

 是在最后一行之后添加它

#includedir /etc/sudoers.d

81
2018-05-19 15:23



//,这看起来是更好的方法,特别是当某些应用程序将为系统用户Richipal添加自己的规则时。有关sudoers.d的更多信息: sudo.ws/man/1.8.13/sudoers.man.html - Nathan Basanese
//,您是否愿意将Gearoid Murphy的一些诊断信息添加到您的答案中? - Nathan Basanese
谢谢你的澄清。在#includedir /etc/sudoers.d行之后添加它在CentOS 7中看起来很重要,而在CentOS 6中的文件中提前使用它似乎很好。 - dmohr
忽略%wheel的NOPASSWD的问题似乎来自于 /etc/sudoers.d/USERNAME 覆盖该组的NOPASSWD权限。在NOPASSWD中应用 /etc/sudoers.d/USERNAME 解决了这个问题。 - eel ghEEz


我在这个页面上尝试了所有答案,没有任何有用的结果。最终我弄清楚了,使用此命令列出你的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。我希望这对其他人有用。


24
2017-11-06 12:57



啊,谢谢!这让我疯了......在我的情况下,我的用户是“sudo”组以及“admin”(我创建的)的一部分,并且每个的权限都不匹配,因为它们在你的情况下。现在这个东西有效! :) - neezer
评论一条线是一种钝器。您可能有兴趣听到“sudo读取sudoers文件并按顺序从上到下应用权限。因此文件中的最后一行将覆盖以前的任何冲突” ubuntuforums.org/showthread.php?t=1132821  - 这对我有用。 - David J.


/etc/sudoers 有一个例子就是文件的底部:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

9
2017-07-15 04:24



那个样本不在我的 - 但谢谢! - warren
喜欢你简洁的答案 - Pei


还有另一种方法可以在不触及sudoers文件的情况下完成。

  • 编辑 /etc/pam.d/su 并取消注释以下行:

    auth           sufficient      pam_wheel.so trust use_uid
    
  • 将用户添加到 wheel 组。


5
2017-07-15 08:39





还有另一种方法可以在不触及sudoers文件的情况下完成。

  • 编辑 /etc/pam.d/sudo 并添加以下行:

    auth足够pam_wheel.so信任use_uid
  • 将用户添加到 wheel 组。

关于“su”而不是“sudo”的原始答案的道具“topdog”和“Daniel Serodio”。我用它作为参考,无耻地复制和修改了他们的帖子。


1
2017-09-11 00:36



我认为不是逐字复制,而是信用它们会更好,但要清楚你的答案究竟有多么不同。我认为这允许无密码 su,而不是/无密码 sudo?顺便说一句,丹尼尔的补充只是格式化。 - mwfearnley