如何在没有密码的情况下运行sudo命令?

/etc/sudoers没有配置时,Ubuntu Server 12.04的AWS映像上的ubuntu用户如何为所有命令提供无密码sudo

我在亚马逊上使用Ubuntu服务器12.04。 我想添加一个与默认Ubuntu用户具有相同行为的新用户。 具体来说,我想为这个新用户提供无密码sudo

所以我添加了一个新用户并去编辑/etc/sudoers (当然使用visudo)。 从阅读该文件看起来,默认的ubuntu用户从admin组成员那里得到了无密码的sudo 。 所以我添加了我的新用户。 哪个没用。 然后我尝试将NOPASSWD指令添加到sudoers 。 哪个也行不通。

无论如何,现在我只是好奇。 如果未在/etc/sudoers定义, ubuntu用户如何获得无密码权限。 允许这个的机制是什么?

好的,我已经发现了答案,所以也可以把它放在这里以保证完整性。 在/etc/sudoers结束时,我认为只是一个评论:

 #includedir /etc/sudoers.d 

但是,这实际上包括该目录的内容。 其中的文件是/etc/sudoers.d/90-cloudimg-ubuntu 。 哪个有预期的内容

 # ubuntu user is default user in cloud-images. # It needs passwordless sudo functionality. ubuntu ALL=(ALL) NOPASSWD:ALL 

这就是默认ubuntu用户的sudo配置所在的位置。

您应该使用visudo编辑此文件。 使用以下命令可以使用visudo编辑正确的文件。

 sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu 

并添加如下行:

 aychedee ALL=(ALL) NOPASSWD:ALL 

在末尾。

我发现,为了在多个服务器之间轻松复制此行为,最直接的做法如下:

 sudo visudo 

改变这一行:

 # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL 

到这一行:

 # Members of the admin group may gain root privileges %admin ALL=(ALL) NOPASSWD:ALL 

并将其移至此行下:

 # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL 

你现在应该有这个:

 # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) NOPASSWD:ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d 

然后为每个需要sudo访问密码的用户

 sudo adduser  sudo 

并且对于每个需要sudo访问且没有密码的用户

 sudo adduser  admin 

最后,运行这个:

 sudo service sudo restart 

就是这样!

编辑:您可能必须添加管理员组,因为我认为它默认不存在。

 sudo groupadd admin 

您还可以通过以下命令将默认AWS ubuntu用户添加到admin组:

 sudo usermod ubuntu -g admin 

注意:正如@hata所提到的,您可能需要使用adm作为管理组名称,具体取决于使用的是哪个版本的Ubuntu。

没有使用任何编辑器的简短回答(在bash上测试,在远程主机上执行风险很大)。

配置sudo在没有当前用户密码的情况下工作:

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

检查编辑:

 sudo visudo -c 

validation您是否可以在没有密码的情况下使用sudo:

 sudo cat /etc/sudoers | grep "$USER" 

…或者只是尝试:

 sudo