有没有办法让基于当前工作目录的sudo命令?

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

你肯定可以把$cwdembedded到sudoers中,只允许某个人删除一个特定目录下的文件,但是你却用错了方法。 做你想做的事情的方法是在sudoers使用绝对path,例如

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

您可以编写一个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的说法,明确添加允许用户删除的path,或者如Kwaiobuild议的那样,在目录上设置ACL。