以特定的方式限制su命令

我有一个通过sudo访问几乎所有东西的系统用户列表。 现在我想限制他们的命令su sudo访问。

我想限制每个用户在系统上的su命令,并允许每个系统用户能够su到一个特定的用户(在这种情况下,它是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:当我从用户meraj做sudo -l ,我得到这个:

 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: 

 username ALL=(root) /bin/su tomcat 

为我工作。 如果它不起作用,可能是因为sudoers文件中有另一个条目,允许更多的命令,可能无限制地访问/bin/su – 我们需要看到整个sudoers文件,未经编辑,以及故障的详细剪切和粘贴,以便能够评论。

编辑 :你已经澄清,你是在其他地方授予用户权限来做一切事情。 我发现明确地删除sudo权限做su,例如

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

在我回答开始的时候给他们回来的只是tomcat,我引用了这行。 如果这不起作用,你能告诉我们这个用户的sudo -l的输出,加上sudo /bin/su tomcatsudo /bin/su userC (其中userC是第三个用户)的输出吗?