Я запускаю веб-сервер на Debian 10 (Buster) и Apache 2.4.38. Я создал специального пользователя, 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
using 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
Вам нужноБЫТЬпользователь acme при запуске sudo, а не с -u acme
.
acme@host:~ $ sudo /etc/init.d/apache2 reload
Другая возможная проблема:
В %
вашем файле sudoers указывает, что acme
это группа. Это не проблема, если ваш пользователь находится в группе под названием acme
, но это проблема, если он не находится в ней.