我在 Debian 10 (Buster) 和 Apache 2.4.38 上运行 Web 服务器。我创建了一个特殊用户acme
来运行用于更新 TLS 证书的脚本。
$ cat /etc/passwd | grep ^acme
acme:x:1002:1002::/var/acme:/usr/bin/nologin
$ cat /etc/group | grep ^acme
acme:x:1002:
acme
证书更新后,应允许此用户重新加载 Apache 2 配置。因此,我将以下行添加到我的/etc/sudoers
使用中visudo(8)
:
%acme ALL=(root) NOPASSWD: /etc/init.d/apache2 reload
不幸的是,这不起作用:
$ sudo -u acme /etc/init.d/apache2 reload
[....] Reloading apache2 configuration (via systemctl): apache2.serviceFailed to reload apache2.service: Access denied
See system logs and 'systemctl status apache2.service' for details.
failed!
我是否遗漏了什么?
答案1
你需要是运行 sudo 时使用用户 acme,而不是-u acme
。
acme@host:~ $ sudo /etc/init.d/apache2 reload
另一个可能的问题:
%
sudoers 文件中的 表示是acme
一个组。如果您的用户属于 组acme
,则这不是问题,但如果不属于 组,则会出现问题。