如何使用 sudo -i 和 sudo su - 以及其他(如果存在)限制用户不登录 root

如何使用 sudo -i 和 sudo su - 以及其他(如果存在)限制用户不登录 root

我试图通过编辑sudoers文件来限制用户M ALL=!/bin/su。我可以限制,sudo su -但不能sudo -i

答案1

对于您原来的问题,您需要排除/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 副本),无论任何“!”如何用户规范中的元素。

相关内容