如何在没有密码的情况下运行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