Sudoers 规则未按预期运行

Sudoers 规则未按预期运行

我想允许用户visit以用户身份运行命令admin,但只能运行位于特定目录中的命令。
因此,我在 sudoers 文件中添加了以下规则:

visit localhost=(admin) NOPASSWD: /home/admin/

目录内/主页/管理员/有两个文件:cmd.shdummy.txt
的内容cmd.sh是:

whoami
触摸假人.txt

然后我以用户身份登录visit并输入:

sudo -u admin /home/admin/cmd.sh

输出结果为:

管理员
触摸:无法触摸“dummy.txt”:权限被拒绝

但如果我以 身份登录admin并输入./cmd.sh,则输出为:

行政

dummy.txt成功触及

为什么用户使用 sudo 时visit无法触碰 的文件?admin

答案1

到cmd.sh的内容:

whoami
touch dummy.txt

添加:

pwd

我怀疑当用户“visit”使用 sudo 运行脚本时,它并没有在你认为的目录中运行。你可以通过将完整路径传递给 tuuch 命令来解决这个问题,例如,

touch /home/admin/dummy.txt

答案2

您没有在 touch 命令中完全限定 dummy.txt 的路径。我猜您是从“admin”没有写入权限的位置运行脚本的。

答案3

sudo -u admin /home/admin/cmd.sh

您告诉 sudo 以管理员用户身份在当前目录中运行 cmd.sh,根据您的描述,该目录可能是 visit 的主目录。管理员没有 visit 主目录的写权限,因此失败。

相关内容