Назад | Перейти на главную страницу

Добавление группы в sudoers не имеет никакого эффекта

Я пытаюсь предоставить группе 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