有没有办法根据当前工作目录允许 sudo 中的命令?

有没有办法根据当前工作目录允许 sudo 中的命令?

我希望 sudo 允许我在当前工作目录(例如 /tmp)时运行命令。示例用法是从 /tmp 目录中删除文件,因此我在 /tmp ($PWD of shell == /tmp),然后我可以运行 rm -v someuseless.bin(someuseless.bin 当然不属于我,所以我无法删除它)。如果不可能(我在 sudo 手册中找不到参考资料),那么为什么?也许这里存在我没有发现的安全违规行为。谢谢。

答案1

您当然可以将 嵌入$cwd到 sudoers 中,以允许某人仅删除特定目录下的文件,但您这样做是错误的。执行您想要的操作的方法是使用 中的绝对路径sudoers,例如

orc       ALL=(ALL) /bin/rm /tmp/someuseless.bin

答案2

您可以编写一个 shell 脚本来检查当前目录,然后授予 sudo 权限来运行该脚本。

/usr/local/bin/cwddostuff.sh:

#!/bin/sh

if [ "$CWD" != "/tmp" ]; then
   exit 1
fi

echo do your stuff

在 /etc/sudoers 中:

user       ALL=(ALL) /usr/local/bin/cwddostuff.sh

谨防这样做很危险,因为现在您还需要检查所有参数是否正常(例如,用户可能在 /tmp,但运行“rm -rf /”)。

最好的方法是按照 MadHatter 所说的那样,明确添加允许用户删除的路径,或者按照 Kwaio 建议的那样,在目录上设置 ACL。

相关内容