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

Linux: как дать пользователю разрешение на перезапуск apache?

У меня есть скрипт, работающий под пользователем без полномочий root, который при определенных условиях должен перезапустить apache httpd.

Каким будет самый простой способ позволить пользователю это сделать?

Я использую Ubuntu Server 8.04 LTS.

Короткий ответ:

С помощью visudoдобавьте в файл sudoers следующее, заменив имя пользователя на правильное имя пользователя:

username ALL = /etc/init.d/apache2 

Если вы не хотите вводить пароль перед этим, используйте следующее:

username ALL = NOPASSWD: /etc/init.d/apache2 

После этого пользователь 'username' может выполнить sudo /etc/init.d/apache2 start (или остановить, перезапустить и т. д.)

Длинный ответ: вы, вероятно, захотите настроить для этого отдельного пользователя, если вы еще этого не сделали, а затем настроить файл / etc / sudoers, чтобы пользователь или группа могли выполнять нужную команду.

Например, чтобы позволить пользователю ben выполнять все команды от имени пользователя root, запрашивая пароль, вы должны сделать следующее:

ben ALL= ALL

Чтобы позволить Бену выполнять только одну команду (например, rm), вы бы сделали следующее:

ben ALL= /bin/rm 

Если вы запускаете сценарий от имени пользователя и не хотите запрашивать пароль, вам нужно использовать опцию NOPASSWD следующим образом:

ben ALL=NOPASSWD: /bin/commandname options

Вы можете сделать то же самое для групп, добавив к именам групп знак процента, например:

%supportstaff          ALL= NOPASSWD: /bin/commandname 

Краткий ответ: sudo.

Вызов будет выглядеть примерно так: sudo /etc/init.d/apache2 restart

Самый простой в использовании visudo для настройки файла / etc / sudoers. Видеть man sudoers и man visudo для подробностей.

Вы также можете сделать это, написав оболочку для apache2ctl, назначив групповое владение группе веб-администрирования и установив бит suid. Это менее общее решение, чем visudo, но позволяет настраивать ограничения возможностей пользователя и проверку ошибок.

Я написал этот инструмент для своих нужд и поделился им на github: https://github.com/josiahjohnston/ltd_apache2ctl