Я пытаюсь предоставить группе www-data доступ к определенным командам в sudo (т.е. перезапустить Apache), и мне не повезло. Я потратил большую часть пятницы на изучение этой проблемы и, должно быть, просмотрел 20 сообщений на форуме и темы SO / SF, относящиеся к этой проблеме, но безуспешно.
Ниже приведен мой файл sudoers (отредактированный через visudo).
#
# This file MUST be edited with the 'visudo' command as root
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
Defaults !requiretty
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# Allow members of www-data group access to apache
%www-data ALL= NOPASSWD: /usr/bin/service apache2 *
# See sudoers(5) for more information on "#include" directive
Если я вхожу в систему как мой пользователь jenkins (который является частью группы www-data, как показано ниже);
root@ip-REDACTED:~# groups jenkins
jenkins : www-data jenkins
Я не могу запустить «sudo service apache2 restart», как показано ниже.
jenkins@REDACTED:/root$ sudo service apache restart
[sudo] password for jenkins:
jenkins is not allowed to run sudo on ip-REDACTED. This incident will be reported.
Дженкинс не входит в группу sudo, но я не хочу, чтобы это было, потому что тогда у него будет доступ ко всему. Кроме того, похоже, он не улавливает флаг NOPASSWD, установленный в sudoers. Я пробовал все, что мог придумать на данный момент, и ничего не вижу. Возможно, стоит упомянуть, что это работает на экземпляре EC2, накладывает ли EC2 какие-либо дополнительные ограничения на то, что можно сделать с файлом sudoers?
Заранее спасибо.
Попробуйте Cmnd_Alias
определение вместо этого:
Cmnd_Alias APACHE_CMD = /usr/sbin/service apache2 restart
%www-data ALL = (root)NOPASSWD: APACHE_CMD
Убедитесь, что путь к service
исполняемый файл правильный.
Вы также можете проверить sudoers
определение в вашем /etc/nsswitch.conf
файл и убедитесь, что он содержит files
атрибут:
sudoers: files ldap sss