如何禁用命令 sudo 的参数的执行

如何禁用命令 sudo 的参数的执行

如何禁用命令 sudo 的参数执行。我的 sudoers.d/test 不起作用。我需要禁用参数 -i。

test ALL = (ALL:ALL) ALL, !/usr/bin/sudo [!-]*

答案1

我在 Unix 和 Linux 上找到了有关同一问题的答案。

答案链接归功于用户汤姆·克里诺

从上述链接复制粘贴:对于您的原始问题,您将需要排除/bin/bash(或定义为用户 shell 的任何内容/etc/passwd),如下所示:

tomk ALL= ALL,!/bin/su,!/bin/bash

然而(!!!),正如您在问题评论中所述,尽管这将拒绝用户运行sudo -ssudo -i它实际上不会阻止他/她以 root 身份获取交互式 shell。

man sudoers

“!”运算符的局限性

使用“!”运算符从 ALL 中“减去”命令通常效果不佳。用户可以通过将所需命令复制到其他名称,然后执行该命令来轻松规避此问题。例如:

bill    ALL = ALL, !SU, !SHELLS

这并不会真正阻止 bill 运行 SU 或 SHELLS 中列出的命令,因为他可以简单地将这些命令复制到不同的名称,或者使用编辑器或其他程序的 shell 转义。因此,这些限制最多只能被视为建议性的(并通过政策加以强化)。

一般来说,如果用户拥有 sudo ALL,那么无论用户规范中是否有“!”元素,都没有什么可以阻止他们创建自己的程序为他们提供 root shell(或创建自己的 shell 副本)。

相关内容