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


156

如何sudo在RHEL(Fedora,CentOS等)或Ubuntu发行版上设置无密码访问?(如果发行版中的内容相同,那就更好了!)

设置:个人和/或实验室/培训设备,不考虑未经授权的访问(即,设备位于非公共网络上,并且任何/所有用户都是完全受信任的,并且设备的内容为“纯香草”) 。


1
@Richipal的答案是actullay是最省力的方法:似乎sudoers规则适用于相反的顺序。
6

2
@ a1an规则的应用顺序与sudoers文件中列出的顺序相同,并且在应用它们时,它们之间会相互覆盖。因此,如果我根本不希望更改规则,则将其放在文件末尾,以便最后应用它并且不能覆盖它。
rsjethani

Answers:


173

编辑由于麦地那的评论:根据手册页,您应该能够写

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每次添加或删除用户时都必须进行更新。


2
ALL工作,而不是*指定所有用户?请参阅中的示例sudoers(5)
麦地那

1
@medina:确实如此,我在阅读手册页时错过了它。我会编辑。
David Z

6
在Ubuntu下,在/etc/sudoers.d下创建一个文件并将其放入其中,这将使您不必编辑sudoers
Xetius 2012年

1
在CentOS7中,默认情况下该条目存在,只是被注释掉了。
killjoy

1
仅通过复制/粘贴设法在centOS中使用它,每次尝试直接键入配置的尝试都失败了。但是除空格外,结果似乎相同……
MUY比利时

95

我尝试了上述解决方案,但没有成功。以下解决方案对我有用:编辑/ etc / sudoers文件并添加以下行

username ALL=(ALL) NOPASSWD: ALL

关键是它的最后一行它说之后添加

#includedir /etc/sudoers.d

1
//,这似乎是更好的方法,尤其是当某些应用程序将为系统用户Richipal添加自己的规则时。有关sudoers.d的更多信息:sudo.ws/man/1.8.13/sudoers.man.html
Nathan Basanese

1
//,您是否愿意将Gearoid Murphy的一些诊断信息添加到您的答案中?
弥敦道(Nathan Basanese)2015年

1
感谢您的澄清。在CentOS 7中,在#includedir /etc/sudoers.d行之后添加它似乎很重要,而在CentOS 6中将该行放在文件中的较早位置似乎可以正常工作
。– dmohr

3
忽略%wheel的NOPASSWD的问题似乎是由于/etc/sudoers.d/USERNAME重写了该组的NOPASSWD许可而引起的。应用NOPASSWD /etc/sudoers.d/USERNAME解决了该问题。
鳗鱼ghEEz

1
在包含重要内容之后,此功能将
Theodore Howell

27

我尝试了此页面上的所有答案,但没有得到有用的结果。最终我想通了,使用此命令列出您的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。我希望这对其他人有用。


1
啊,谢谢!这让我发疯了……就我而言,我的用户既属于“ sudo”组又属于“ admin”(由我创建),并且每个权限都与您的情况不匹配。现在这些东西起作用了!:)
neezer

14
评论出界是一种钝器。根据ubuntuforums.org/showthread.php?t=1132821,您可能会想听到“ sudo从顶部到底部读取sudoers文件并应用权限。因此文件的最后一行将覆盖以前的任何冲突” - -这对我有用。
David J.


6

还有另一种方法可以不触碰sudoers文件。

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

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


2

还有另一种方法可以不触碰sudoers文件。

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

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

对于“ su”而不是“ sudo”的原始答案,建议使用“ topdog”和“ Daniel Serodio”。我以此为参考,毫不客气地复制和修改了他们的帖子。


1
我认为与其复制逐字记录,不如将它们归功于它,但是要清楚您的答案有何不同。我认为这允许无密码su,而不是/以及无密码sudo?顺便说一下,Daniel的添加只是格式化。
mwfearnley
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.