我一直在努力让 sudo /bin/timeout 与另一个允许的命令一起工作。
例如,我想做的是:
john ALL=(ALL,!ROOT) NOEXEC:NOPASSWD: /bin/timeout, /bin/xx
然后允许约翰在超时的情况下使用 xx 命令。
了解这是 sudo 的 NOEXEC 部分的功能,是否有适当的方法来解决这个问题,而不是简单地允许 exec 而不允许他们使用超时来代理运行另一个未经允许的命令?
答案1
我不确定您在运行时是否真的在更改用户xx
,但我假设是用户 jill。
您似乎有 3 个命令可以使用:timeout
、xx
和sudo
。如果您允许 jack 运行sudo -u jill timeout 99 sudo ... xx
,那么您可以使用第二个 sudo 来恢复 NOEXEC。例如:
jill ALL=(jill) NOEXEC:NOPASSWD: /usr/bin/xx
jack ALL=(ALL,!ROOT)NOEXEC:NOPASSWD: /usr/bin/xx
jack ALL=(ALL,!ROOT) EXEC:NOPASSWD: /usr/bin/timeout [0-9] sudo -u jill xx
然后你可以做
sudo -u jill timeout 5 sudo -u jill xx
并且用户 jill 将为 设置 NOEXEC xx
。