我发出 visudo 命令,将此规则添加到文件的最后,保存文件并退出。
newuser ALL=/usr/sbin/useradd
然而 newuser 仍然能够运行这样的命令
sudo passwd username
并且添加到 sudoers 文件的规则似乎不起作用。为什么 ?
修改文件后我已注销/登录。
目标是让 newuser 能够创建新用户但不能为该用户设置密码。
id newuser
uid=1003(newuser) gid=1003(newuser) groups=1003(newuser),27(sudo)
visudo
#
# 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:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
newuser ALL=/usr/sbin/useradd
您
newuser
的配置中有两行会影响它。它属于sudo
组,并且是用户newuser
。因为您的用户在sudo
组中,所以它可以在提供密码后运行任何命令。您需要
newuser
从sudo
组中删除,或调整您的配置以适应此情况。sudo
在此过程中,请注意不要丢失主帐户!当
newuser
不再在一个允许它访问所有命令的组中时,它将被限制并且只允许运行useradd
,就像您配置的那样,并且不需要弄乱或添加任何passwd
条目,因为它没有访问该命令。你问题的措辞不清楚。是否
newuser
能够运行任何和所有sudo
命令?他们能跑还是不能跑sudo passwd username
?你的目标是什么?您必须向我们提供
/etc/sudoers
文件以及您newuser
所属的组列表。它很可能newuser
在该sudo
组中,或者在某个其他组中被授予访问权限。如果您无法运行
sudo passwd
,则需要添加一条规则以允许您的用户运行该命令,因为/usr/sbin/useradd
和/usr/bin/passwd
是两个不同的二进制文件。你有没有想过你所做的事情的后果?如果您允许
newuser
,sudo passwd root
为什么不给他们root 访问权限(除非您实际上将其锁定为username
)?