以特定方式限制 su 命令

以特定方式限制 su 命令

我有一份系统用户列表,这些用户几乎可以通过 sudo 访问所有权限。现在我想限制他们对 su 命令的 sudo 访问权限。

我想限制为系统上的每个用户提供命令,并允许每个系统用户能够对于特定用户(在本例中是 tomcat):

#user_name should be able to do *sudo su tomcat* but not *sudo su another_user*
user_name ALL=/bin/, !/bin/su, /bin/su tomcat

我尝试了不同的组合,但不幸的是无法使其发挥作用。

这是我的完整 /etc/sudoers 文件:

Defaults   !visiblepw
Defaults    always_set_home

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root    ALL=(ALL)   ALL

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

/etc/sudoers.d/ 还有另一个文件,其中包含以下内容:

meraj ALL=(ALL) NOPASSWD:ALL
siraj ALL=(ALL) NOPASSWD:ALL

# Members of the group 'sysadmin' may gain root privileges
%sysadmin ALL=(ALL) NOPASSWD:ALL

更新 2:当我做sudo -l我从用户 meraj 处得到以下信息:

Matching Defaults entries for meraj on this host:
    !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

User meraj may run the following commands on this host:
    (ALL) NOPASSWD: ALL
    (root) ALL, (root) !/bin/su
    (root) /bin/su tomcat

当我执行 sudo /bin/su tomcat 或 sudo /bin/su siraj 时,它会询问我密码:

[sudo] password for meraj:

答案1

username       ALL=(root)      /bin/su tomcat

对我来说很管用。如果你不适用,可能是因为其他sudoers 文件中的条目,允许更广泛的命令,可能不受限制地访问/bin/su- 我们需要查看整个sudoers文件,未删节的内容,以及失败的详细剪切和粘贴,才能对此发表评论。

编辑:您已澄清,您在其他地方授予用户执行所有操作的权限。我发现明确删除 sudo 权限以执行 su,例如

username       ALL=(root)      ALL, !/bin/su

在将它们返回给 tomcat 之前,我引用了我在答案开头引用的那行,这样就行了。如果这对您不起作用,您能否向我们展示此类用户的输出,以及和sudo -l的输出(其中用户 C 是第三个用户)?sudo /bin/su tomcatsudo /bin/su userC

相关内容