Краткий ответ:
Используя 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
username
быть ограничен подмножеством параметров? Скажиstart
restart
но нетstop
?visudo
команда выполняет проверку безопасности на ваши изменения , чтобы не нарушатьsudo
/su
команду случайно: unix.stackexchange.com/a/27595/61349Краткий ответ: sudo.
Вызов будет выглядеть примерно так:
sudo /etc/init.d/apache2 restart
Проще всего использовать
visudo
для настройки файл / etc / sudoers. Смотритеman sudoers
иman visudo
для деталей.источник
Это также можно сделать, написав оболочку для apache2ctl, назначив владение группой для группы веб-администрирования и установив бит suid. Это менее общее решение, чем visudo, но позволяет настраивать пользовательские ограничения и проверку ошибок.
Я написал этот инструмент для своих нужд и поделился им на github: https://github.com/josiahjohnston/ltd_apache2ctl
источник