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

35

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

Что было бы самым простым способом для меня, чтобы позволить пользователю сделать это?

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

itsadok
источник

Ответы:

84

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

Используя 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

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

ben ALL= /bin/rm 

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

ben ALL=NOPASSWD: /bin/commandname options

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

%supportstaff          ALL= NOPASSWD: /bin/commandname 
epic9x
источник
2
Может usernameбыть ограничен подмножеством параметров? Скажи start restartно нет stop?
ThorSummoner
visudoкоманда выполняет проверку безопасности на ваши изменения , чтобы не нарушать sudo/ suкоманду случайно: unix.stackexchange.com/a/27595/61349
ThorSummoner
1

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

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

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

Зейн С Халсолл
источник
ОП сказал, что делает это через скрипт - скрипт не сможет ввести пароль, поэтому этот ответ не будет иметь никакого смысла.
Мэтт Флетчер
@MattFletcher, если вы не используете NOPASSWD
Робин
0

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

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

JosiahJohnston
источник