为什么这个 sudoer 命令不是以 root 身份运行的?

Len*_*and -5 scripting php permissions sudo tmp

我想使用/etc/sudoers.d.

所以我做了以下事情:

visudo -f /etc/sudoers.d/99-php
Run Code Online (Sandbox Code Playgroud)

并输入此 sudo 规则:

www-data ALL = (root) NOPASSWD: /etc/my_script.sh
Run Code Online (Sandbox Code Playgroud)

/etc/my_script.sh脚本中,我在/tmp再次删除它们之前创建了一个文件夹和几个文件。

去测试:

su www-data
/etc/my_script.sh
Run Code Online (Sandbox Code Playgroud)

这给了我很多这样的权限错误:

rm: cannot remove «/tmp/my_file.txt»: Access denied
Run Code Online (Sandbox Code Playgroud)

暗示我的脚本实际上根本没有以 root 身份运行。

那么我该怎么做才能让它发挥作用?

dmo*_*ati 6

您必须使用sudo运行命令。

sudo /etc/my_script.sh
Run Code Online (Sandbox Code Playgroud)

编辑 suduoers 文件并不意味着脚本的每次调用都以 root 身份运行,只是如果调用正确,它们就可以这样做。

将 shell 脚本放在 /etc 中是否有意义是一个单独的问题。