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