我有一个用户,比如说userX
在一台 Centos7 机器上。我已删除该用户的所有组,并且该用户现在仅分配给该组userX
。但是,我仍然能够使用sudo su
并成为root
.
命令序列:
1.SSH
以普通用户身份登录sriram
。
2.sudo
至userX
:sudo su - userX
。
3. 成为root: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
我哪里可能出错了?我需要提供哪些额外信息?
答案1
当排除sudo
访问故障时,sudo -l
非常有用。sudo -l
打印您的sudo
权限,并sudo -lU user
打印该用户的sudo
权限(如果您拥有所有权限)。
$ sudo -l
User muru may run the following commands on laptop:
(ALL) ALL
sudo
为每个匹配的规则打印一行,指定授予的权限,但不指定匹配条件。
例如,在三个不同的文件中使用以下三个规则:
%wheel ALL = (ALL) ALL
muru ALL = (ALL:ALL) ALL
%muru ALL = (ALL) ALL
输出可能是:
# sudo -lU muru
User muru may run the following commands on laptop:
(ALL) ALL
(ALL) ALL
(ALL : ALL) ALL
您可以做的是查找授予这些权限的规则,并检查目标用户如何匹配它们。每行应该对应一个sudo
与该用户匹配的规则,因此,如果有三行,则应该有三个规则(除非您的sudo
配置很奇怪并且读取同一文件两次或其他什么)。