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

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

评论

@Richipal给出的答案实际上是最省力的方法:似乎sudoers规则适用于相反的顺序。

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

#1 楼

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

ALL            ALL = (ALL) NOPASSWD: ALL


,以允许所有用户无需密码即可运行所有命令。 >

作为参考,我留下我以前的答案:

如果添加以下形式的行

%wheel         ALL = (ALL) NOPASSWD: ALL

< br到/etc/sudoers(当然使用visudo命令),它将使wheel组中的每个人都可以运行任何命令而无需提供密码。因此,我认为最好的解决方案是将所有用户放在某个组中,并在sudoers中添加一行-显然,您应该将wheel替换为您使用的实际组。

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

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


并使用它:

EVERYONE       ALL = (ALL) NOPASSWD: ALL


,尽管您每次都必须更新/etc/sudoers您添加或删除用户。

评论


并非所有用户都可以使用*来指定所有用户吗?参见sudoers(5)中的示例。

–麦地那
2010年7月15日10:58



@medina:确实如此,当我阅读手册页时我很想念它。我会编辑。

– David Z
2010年7月15日在17:26

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

– Xetius
2012年10月28日在20:18

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

– Killjoy
18年4月28日在10:22

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

–MUY比利时
18年6月28日在8:31

#2 楼

我尝试了上述解决方案,但无济于事。
以下解决方案为我工作了
编辑/ etc / sudoers文件并添加以下行

username ALL=(ALL) NOPASSWD: ALL


关键是将其添加到最后一行

#includedir /etc/sudoers.d

之后

评论


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

– Nathan Basanese
15年8月27日在17:18

//,您是否愿意将Gearoid Murphy的一些诊断信息添加到您的答案中?

– Nathan Basanese
15年8月27日在17:19

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

– dmohr
17年6月8日在17:13

忽略%wheel的NOPASSWD的问题似乎是由于/etc/sudoers.d/USERNAME覆盖了该组的NOPASSWD权限而引起的。在/etc/sudoers.d/USERNAME中应用NOPASSWD可解决此问题。

–鳗鱼ghEEz
17年7月31日在15:03

对此大加赞赏,包括在内之后很重要

–西奥多·豪威尔(Theodore Howell)
19年4月8日在17:50

#3 楼

我尝试了此页面上的所有答案,但没有得到有用的结果。最终我想通了,使用此命令列出您的sudo权限:

sudo -l


这应该给您这样的输出:

它显示我已经配置了root特权,但是我仍然属于与sudo规则匹配的组(admin),后者需要密码(“(ALL)ALL”)。这迫使sudo提示我。有问题的规则是管理员用户:

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL


一旦我注释掉,我就可以在没有密码的情况下进行sudo。我希望这对其他人有用。

评论


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

– neezer
2012年5月6日22:28

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

– David J.
13年1月15日在4:08

#4 楼

/etc/sudoers中,有一个示例恰好位于文件底部:

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


评论


该样品不在我的手中,但谢谢!

–沃伦
2012年10月1日在2:39

喜欢你简洁的答案

–光谱
15年7月21日在1:07

#5 楼

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



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

auth           sufficient      pam_wheel.so trust use_uid


将用户添加到wheel组。


#6 楼

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


编辑/etc/pam.d/sudo并添加以下行:
auth           sufficient      pam_wheel.so trust use_uid



将用户添加到wheel组。


向“ topdog”和“ Daniel Serodio”提供有关“ su”而不是“ sudo”的原始答案的道具。我以此为参考,毫不客气地复制和修改了他们的帖子。

评论


我认为与其复制逐字记录,不如将它们归功于它,但要清楚您的答案有何不同。我认为这允许无密码的su,而不是无密码的sudo?顺便说一下,Daniel的添加只是格式化。

–mwfearnley
18年8月22日在10:01

#7 楼

这是一个旧线程,但有趣的是,没有人将系统默认值authenticate添加到此答案列表中。在sudoers文件中使用

Defaults  !authenticate


条目将允许任何用户使用其定义的sudo命令,而无需任何密码验证。它是默认sudo规范的一部分,并且可以在OP中指定的所有平台上移植。而且,如果您需要将其范围限定于特定用户,请尝试

Defaults:<user_name>  !authenticate 


#8 楼

echo -e "\n$USER ALL=(ALL) NOPASSWD: ALL\n" | sudo tee -a /etc/sudoers
sudo cat /etc/sudoers


重新打开终端,确认没有要求您输入密码:

sudo echo "it works!"