我想允许用户visit以用户admin身份运行命令,但只能位于特定目录中的命令。
所以我将下面的规则添加到sudoers文件中:
visit localhost=(admin) NOPASSWD: /home/admin/
目录/ home / admin /里有两个文件: cmd.sh和dummy.txt
cmd.sh的内容是:
我是谁
触摸dummy.txt
然后我以用户visit身份login并键入:
sudo -u admin /home/admin/cmd.sh
和输出的是:
pipe理
触摸:不能触摸`dummy.txt':权限被拒绝
但是,如果我以admin身份login并键入./cmd.sh ,则输出为:
pipe理
和dummy.txt成功触及
为什么用户在使用sudo时无法visit admin的文件?
对于cmd.sh的内容:
whoami touch dummy.txt
加:
pwd
我怀疑,当用户“访问”与sudo运行脚本它没有运行在你认为它是目录。 你可以通过传递tuuch命令的完整path来解决这个问题,例如,
touch /home/admin/dummy.txt
您的触摸命令中没有完全限定dummy.txt的path。 我的猜测是,您正在从“admin”没有写入权限的位置运行脚本。
sudo -u admin /home/admin/cmd.sh
你要告诉sudo运行cmd.sh作为你当前目录中的admin用户,你的描述中的admin用户可能是访问的主目录。 admin对访问主目录没有写权限,所以失败。