Я хочу иметь возможность перезапускать службы из php-скрипта. работает под учетной записью www-пользователя.
Как лучше всего выполнять эти действия?
Я понимаю, что могу создать файл с командами que'd, читаемыми CRON, но решение чешется.
Я имею в виду крошечный сервис, работающий под root, позволяющий использовать предопределенные «методы», поэтому произвольные действия root не могут быть выполнены.
Есть какой-нибудь инструмент для этого?
Вы можете изобрести велосипед, но, честно говоря, я использую для этого sudo без пароля. Например, моя система мониторинга должна иметь возможность запускать команду для проверки аппаратного RAID. Для этого требуются привилегии root, но я не хочу запускать всю систему мониторинга как root, поэтому вместо этого у меня есть sudoers
строка, которая говорит
nagios ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid
а затем запустите команду sudo /usr/lib/nagios/plugins/check_md_raid
как пользователь мониторинга, когда мне нужно проверить RAID.
У вас может быть строка sudoers, в которой говорится
www-user ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice
затем запустите php sudo /etc/rc.d/init.d/myservice restart
.
Взгляни на судо: он позволяет указать действия, которые могут быть выполнены как другой пользователь (root в вашем случае).
Вы можете, например, добавить в свой/etc/sudoers
(не редактируйте файл напрямую, используйте visudo
)
www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction
Видеть man sudo
для деталей и синтаксиса файла