为了正确避免这种情况,您必须采取不同的方法。
如果您不允许,sudo su
我仍然可以运行,sudo -u root /bin/sh
如果您不允许,我将编写一个小包装脚本并执行此...
解决这个问题的唯一方法是只允许需要的命令。
% sudo ALL = (ALL) NOPASSWD: ALL
您已有效地授予 sudo 组中的用户对您的系统的完全不受限制的控制权。试图拒绝他们访问su
二进制文件是徒劳的,因为他们已经通过 sudo 和组成员身份获得了 root 权限。
您应该分析 sudo 组中用户的工作流程,以确定他们需要以 root 身份运行哪些命令,并使用 sudo 授予他们仅对这些命令的特权访问权限。如有必要,请编写脚本并授予 sudo 组访问权限以运行脚本(但请确保他们没有对它的写访问权限),而不是其中的单个命令。
例如,您可能确定您的用户需要能够使用kill
目录/usr/local/sudocmds
(您的本地脚本所在的位置)中的所有命令,因此您可以像这样授予他们 sudo 访问权限
%sudo ALL=NOPASSWD: /usr/bin/kill, /usr/local/sudocmds
Run Code Online (Sandbox Code Playgroud)
您也可以使用命令别名
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump
%sudo ALL=NOPASSWD: PRINTING, DUMPS, /usr/bin/kill, /usr/local/sudocmds
Run Code Online (Sandbox Code Playgroud)
它将PRINTING
和DUMPS
Cmnd_Alias 中的命令添加到 sudo 组可以运行的命令列表中。
查看sudoers手册页以获取更多信息和示例。