我有一个用户,比如说userX
在 Centos7 机器上。我已经从这个用户中删除了所有的组,这个用户现在只分配给了组userX
。但是,我仍然可以使用sudo su
并成为root
.
命令序列:
1.SSH
作为普通用户sriram
。
2.sudo
对userX
:sudo su - userX
。
3.成为根:sudo su
。这在没有密码等的情况下是允许的。理想的行为userX
是不允许成为 root。
运行sudo -lU userX
::
[sudo] password for sriram:
Matching Defaults entries for userX on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, timestamp_timeout=0
User userX may run the following commands on this host:
(ALL) NOPASSWD: ALL
(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
我哪里会出错?需要我提供哪些额外信息?
当故障排除sudo
访问时,sudo -l
非常有用。sudo -l
打印您的sudo
权限,并sudo -lU user
打印该用户的sudo
权限(如果您拥有所有权限)。
$ sudo -l
User muru may run the following commands on laptop:
(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
sudo
为每个匹配的规则打印一行,指定授予的权限,但不指定匹配条件。
例如,在三个不同的文件中使用以下三个规则:
%wheel ALL = (ALL) ALL
muru ALL = (ALL:ALL) ALL
%muru ALL = (ALL) ALL
Run Code Online (Sandbox Code Playgroud)
输出可能是:
# sudo -lU muru
User muru may run the following commands on laptop:
(ALL) ALL
(ALL) ALL
(ALL : ALL) ALL
Run Code Online (Sandbox Code Playgroud)
您可以做的是查找授予这些权限的规则,并检查目标用户如何匹配它们。每一行应该对应一个sudo
与这个用户匹配的规则,所以,如果有三行,就应该有三个规则(除非你的sudo
配置很奇怪,读取同一个文件两次什么的)。