/etc/sudoers.d 中的 Sudo 指令不起作用(但如果它在 /etc/sudoers 中就好了)

Ben*_*ess 16 sudo ubuntu-18.04

我希望向/etc/sudoers.d包含指令的文件夹添加一个文件,以允许www-data在没有 root 密码的情况下运行一个特定的脚本。

该指令是

www-data ALL=(ALL) NOPASSWD: /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)

如果我visudo将其添加到 中/etc/sudoers,则没有问题。

如果我将该行放在一个文件中并将其复制到/etc/sudoers.d, 那么visudo它会告诉我该文件在第 1 行附近有一个“语法错误”。

我还需要在文件中放入其他东西,或者我需要做些什么才能使其工作?

我正在运行 Ubuntu 18。

谢谢!

Ben*_*ess 20

我发现了问题 - 对于 /etc/sudoers.d 中的文件,文件不能以指令结尾,而是在新行上。这最容易用 显示cat -A

无效的文件:

root@server:/etc/sudoers.d# cat -A /etc/sudoers.d/testfile
www-data ALL=(ALL) NOPASSWD: /path/to/script.shroot@server:/etc/sudoers.d#
Run Code Online (Sandbox Code Playgroud)

有效文件:

root@server:/etc/sudoers.d# cat -A /etc/sudoers.d/testfile
www-data ALL=(ALL) NOPASSWD: /path/to/script.sh$
root@server:/etc/sudoers.d#
Run Code Online (Sandbox Code Playgroud)

  • 即,[文件必须是**有效的文本文件**](https://unix.stackexchange.com/q/446237/70524)。如果您的文件不以换行符结尾,则它不是有效的文本文件。 (2认同)
  • 那就怪罪那个蹩脚的编辑吧。如果最后的换行符丢失,任何像样的 Unix 编辑器都会添加它。 (2认同)