ubuntu
Ubuntu Server 12.04 的 AWS 映像上的用户如何在sudo
没有配置的情况下对所有命令设置无密码/etc/sudoers
?
我在亚马逊上使用 Ubuntu 服务器 12.04。我想添加一个与默认 Ubuntu 用户具有相同行为的新用户。具体来说,我希望sudo
这个新用户无密码。
所以我添加了一个新用户并开始编辑/etc/sudoers
(当然使用 visudo)。通过阅读该文件,似乎默认ubuntu
用户sudo
从成为该admin
组的成员中获得了无密码。所以我添加了我的新用户。这没有用。然后我尝试将NOPASSWD
指令添加到sudoers
. 这也不起作用。
无论如何,现在我只是好奇。怎样的ubuntu
,如果他们没有在定义用户密码的获得特权/etc/sudoers
。允许这样做的机制是什么?
ayc*_*dee 365
好的,我已经找到了答案,所以为了完整起见,不妨把它放在这里。最后,/etc/sudoers
我以为只是评论:
#includedir /etc/sudoers.d
Run Code Online (Sandbox Code Playgroud)
然而,这实际上包括该目录的内容。里面是文件
/etc/sudoers.d/90-cloudimg-ubuntu
。其中有预期的内容
# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
所以这就是默认 ubuntu 用户的 sudo 配置所在的位置。
您应该使用 visudo 编辑此文件。以下命令将让您使用 visudo 编辑正确的文件。
sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu
Run Code Online (Sandbox Code Playgroud)
并添加如下一行:
aychedee ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
在末尾。
jim*_*kiz 104
我发现为了在多个服务器之间轻松复制这种行为,最直接的做法是:
sudo visudo
Run Code Online (Sandbox Code Playgroud)
改变这一行:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
到这一行:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
并移动在这一行:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
你现在应该有这个:
# 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
Run Code Online (Sandbox Code Playgroud)
然后对于需要使用密码进行sudo 访问的每个用户:
sudo adduser <user> sudo
Run Code Online (Sandbox Code Playgroud)
对于每个需要 sudo 访问且无需密码的用户:
sudo adduser <user> admin
Run Code Online (Sandbox Code Playgroud)
(在旧版本的 ubuntu 上,您可能需要这样做):
sudo service sudo restart
Run Code Online (Sandbox Code Playgroud)
就是这样!
编辑:您可能需要添加 admin 组,因为我认为默认情况下它不存在。
sudo groupadd admin
Run Code Online (Sandbox Code Playgroud)
您还可以通过以下命令将默认 AWSubuntu
用户添加到admin
组中:
sudo usermod ubuntu -g admin
Run Code Online (Sandbox Code Playgroud)
注意:正如@hata 所提到的,您可能需要使用adm
作为您的管理员组名称,具体取决于所使用的 Ubuntu 版本。
小智 9
我会在 /etc/sudoers.d/ 目录下创建我自己的文件 - Amazon Cloud 创建的文件可能会在任何更新时被覆盖。在 /etc/sudoers.d 中创建文件后,添加此条目,
<your user name> ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
重新启动系统,这将起作用。
小智 6
不使用任何编辑器的简短回答(在 bash 上测试,在远程主机上执行风险很大)。
将 sudo 配置为在没有密码的情况下为当前用户工作:
echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
Run Code Online (Sandbox Code Playgroud)
检查编辑:
sudo visudo -c
Run Code Online (Sandbox Code Playgroud)
验证是否可以在没有密码的情况下使用 sudo:
sudo cat /etc/sudoers | grep "$USER"
Run Code Online (Sandbox Code Playgroud)
...或者简单地尝试一下:
sudo <anything>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
580311 次 |
最近记录: |