我发出 visudo 命令,将此规则添加到文件的最末尾,保存文件并退出。
newuser ALL=/usr/sbin/useradd
但是 newuser 仍然可以运行以下命令:
sudo passwd username
并且添加到 sudoers 文件的规则似乎不起作用。为什么?
我修改文件后已注销/登录。
目标是让新用户能够创建新用户,但不能为该用户设置密码。
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
答案1
您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
)?