我有几台服务器,其中一些用户需要 sudoers 才能工作。问题是当 sudoers 可以运行命令sudo su
并以用户身份登录时root
。运行该命令似乎非常危险。
我尝试在文件 /etc/sudoers 中使用命令别名,但没有奏效。有没有办法让他们成为 sudoers 但不运行命令sudo su
?
答案1
为了正确避免这种情况,您必须采取不同的方法。
如果您不允许,sudo su
我仍然可以运行,sudo -u root /bin/sh
如果您不允许,我将编写一个小的包装脚本并执行此...
解决这个问题的唯一方法是只允许需要的命令。
答案2
%sudo ALL =(全部)NOPASSWD:全部
su
您实际上已授予 sudo 组中的用户对您的系统的完全不受限制的控制权。其他人指出,试图拒绝他们访问二进制文件是徒劳的,因为他们已经通过 sudo 获得了 root 权限并成为该组的成员。
你应该分析 sudo 组中用户的工作流程,以确定他们执行了哪些命令需要以 root 身份运行并使用 sudo 授予他们仅对这些命令的特权访问权限。如有必要,编写脚本并授予 sudo 组运行脚本的权限(但请确保他们没有写入权限),而不是其中的单个命令。
例如,你可能确定你的用户需要能够使用kill
目录(你的本地脚本所在的位置)中的所有命令,/usr/local/sudocmds
因此你可以向他们授予 sudo 访问权限,如下所示
%sudo ALL=NOPASSWD: /usr/bin/kill, /usr/local/sudocmds
你也可以使用命令别名
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
PRINTING
将和Cmnd_Alias中的命令添加DUMPS
到 sudo 组可以运行的命令列表中。
看看sudoers手册页以获取更多信息和示例。