首先,提前抱歉,我知道有十亿个这样的问题,但对我来说没有任何作用......
我在目录中找到了 sudo 用户无法删除的某个文件。我知道 sudo 应该适用于所有事情,这是该小组的重点,但也许有一个解决方案
我正在考虑限制 sudo 可以执行的命令类型(在 /etc/sudoers 文件中),但首先,它不会真正解决任何问题,其次,通过使用以下示例,它无法以某种方式工作:
%wheel ALL=(ALL) ALL, !/usr/bin/rm
我尝试使用不同的组、我的用户名等,但我甚至无法限制我自己用户的命令
总之,有什么方法可以阻止 sudo 用户键入某些命令(例如 rm -rf name_of_folder),而不是阻止访问整个 rm 命令或任何其他解决方案?也许甚至可以在输入某个命令时要求输入密码?
答案1
总之,有什么方法可以阻止 sudo 用户输入某些命令,例如 rm -rf name_of_folder
不,因为你只能表达对命令和参数的简单匹配sudoers
,并且用户很容易逃脱它们。例如,他们可以尝试rm -v foo
、、rm -- foo
等等rm foo -r
。这取决于每个命令的确切接口,而 sudo 不理解它们。
而不是阻止访问整个 rm 命令或任何其他解决方案?
这是通常的选择。您阻止访问rm
,但提供对您自己的受限命令的访问,通常是围绕 targe 命令的 shell“包装器”。
但受限命令的编写难度较大,安全风险较高。我建议您从不带参数的命令开始,这确保它忽略 stdin 及其环境,并通过 为您的用户提供 root 访问权限sudoers
。然后也许添加 1 个 arg 并对其解释非常迂腐,特别是如果它是一条路径。
最基本的限制命令如下/usr/local/bin/restricted_rm
:
#!/bin/sh
exec </dev/null
/usr/bin/env -i rm -rf /absolute/path/to/folder
尝试与用户调整您的流程/界面,看看这样一个简单的脚本是否可以解决问题,这是值得的。否则,您会收到更复杂的“过滤”限制命令的警告,这是一个严重的安全隐患。即使你知道自己在做什么。到过那里。