是否可以编辑 sudoers 文件,以便用户可以使用 sudo 执行除指定命令之外的任何命令?相反,我相信可以设置 sudoers 文件,以便用户只能执行给定的命令列表。
编辑:我真正想要删除的命令是 halt 和 reboot... 这让我想到 halt 和 reboot 有特殊的系统调用。你能从用户那里拿走系统调用吗?如果不能,是不是因为 unix 权限系统抽象了系统调用而忽略了这一点?
答案1
另一种看法是,如果用户拥有基本上不受限制的根访问权限,他们就可以轻松获得完全根访问权限。
尽管你也许能够解决某些问题,但却很容易被规避。
尽管需要花费很多时间去学习,但 SElinux 仍是一种可行的方法。
答案2
是也不是...您可以通过在文件前面加上感叹号(!)来阻止用户运行特定文件,但是您无法阻止用户将文件复制到另一个位置,然后从那里运行它。
User_Alias ADMINS = peter, bob, bunny, %operator
ADMINS ALL = !/usr/bin/su, !SHELLS
答案3
要执行您想要的操作(让用户保持运行停止、重新启动和关闭),您必须研究 SElinux 的内容以阻止用户进行这些系统调用。否则,用户将先运行 /bin/sh,然后运行 /bin/halt,而无需通过 sudo。
答案4
如果用户真的想要重启,他会找到办法的。sudo -s
,,sudo -i
...sudo $EDITOR /etc/sudoers
可以用来解除你的限制。
在类 Unix 系统中,只要您是 root (uid 0),就可以重新启动系统。如果您确实找到了限制这些系统调用的方法,可以这样做:
用户$ echo b | sudo tee /proc/sysrq-trigger
或其变体。或者通过引起内核崩溃来重新启动。或者...
最后,拥有 root 权限通常可以让您消除现有的任何限制。