尽管已从所有组中删除,但用户仍具有 sudo 权限

Sri*_*ram 2 sudo

我有一个用户,比如说userX在 Centos7 机器上。我已经从这个用户中删除了所有的组,这个用户现在只分配给了组userX。但是,我仍然可以使用sudo su并成为root.

命令序列:
1.SSH作为普通用户sriram
2.sudouserXsudo 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)

我哪里会出错?需要我提供哪些额外信息?

mur*_*uru 5

当故障排除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配置很奇怪,读取同一个文件两次什么的)。