假设我有 2 个用户 - “alice”和“bob”,并且想允许“alice”以 root 身份运行任何命令,但不以“bob”或任何其他用户身份运行命令,我可以这样做吗?如果可以,该怎么做?
考虑这个例子,它允许 james 以 alice 的身份运行任何命令
james ALL=(alice) ALL
或者这个例子允许 fred 以 root 身份运行 ls 命令
fred ALL=(root)/bin/ls
我怀疑这与 /etc/sudoers 的修改有关,类似于
爱丽丝 ALL=(根) ALL?
答案1
一旦成为 root 用户,您就可以成为任何其他用户。
如果你能限制 Alice 使用一组有限的已批准的命令,那么你可能可以阻止她成为另一个用户,但随后她以 root 身份运行的每个命令都需要检查是否存在漏洞,从而允许她使用未经批准的程序。但这非常复杂,可能不可行。
答案2
我相信 Linux 的功能可以让您启动进程而无需更改用户,即使 root 也可以。 setcap
可能满足您的需要,或者您可能想研究 SELinux。 但是,似乎需要在此领域进行更多的开发工作。 看看这个 Stack Overflow 帖子。