我希望 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。