2015-07-21 7 views
3

У меня есть супервизор, который запускает программу в качестве пользователя stavros, и я хотел бы дать тому же пользователю разрешение перезапустить его с помощью supervisorctl. К сожалению, я могу сделать это только с помощью sudo, иначе я получаю разрешение, отклоненное в файле socket.py. Как я могу позволить себе перезапустить процессы супервизора?Разрешить пользователю, кроме root, перезапустить процесс supervisorctl?

ответ

1

Лично я считаю, что неплохо проработать супервизор как root, но если вы хотите сделать это, разрешив полный перезапуск других пользователей, вот как я это сделаю.

1/Создать супервизора группу на вашей системе, которая будет иметь права рестарт на supervisord

2/Put соответствующих пользователей в группе супервизора

3/В конфигурации supervisord, используйте следующие строки в [unix_http_server] раздел:

chmod=0770     ; socket file mode (default 0700) 
chown=root:supervisor  ; socket file uid:gid owner 

это будет гарантировать, что розетка администратора доступна из выбранных пользователей.

4/Добавить супервизор в механизм инициализации вашей системы в режиме респауна (init, systemd, upstart и т. Д.). Это зависит от вашей системы. Режим Respawn означает, что процесс будет автоматически перезапущен, если он сработает или остановится.

5 От одного из выбранных пользователей вы должны иметь возможность использовать superisorctl для запуска команд, включая полное завершение работы, которое приведет к полному перезапуску супервизора.

+0

Это сработало, спасибо! Я не понимал, что 'unix_http_server' - это то, что supervisorctl используется для связи с supervisord. Я работаю только как root из-за конфигурации debian по умолчанию, но я отбрасываю привилегии в приложении, поэтому все должно быть хорошо. –

0

Возможно, вам стоит попробовать перезагрузить свой superviord процесс с помощью пользователя stavros.

+0

Хм, это действительно сработает, так как мне нужно только его выполнить под этим пользователем. Я попробую и отчитаю, спасибо! –