У меня есть супервизор, который запускает программу в качестве пользователя stavros, и я хотел бы дать тому же пользователю разрешение перезапустить его с помощью supervisorctl. К сожалению, я могу сделать это только с помощью sudo, иначе я получаю разрешение, отклоненное в файле socket.py. Как я могу позволить себе перезапустить процессы супервизора?Разрешить пользователю, кроме root, перезапустить процесс supervisorctl?
ответ
Лично я считаю, что неплохо проработать супервизор как 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 для запуска команд, включая полное завершение работы, которое приведет к полному перезапуску супервизора.
Возможно, вам стоит попробовать перезагрузить свой superviord
процесс с помощью пользователя stavros
.
Хм, это действительно сработает, так как мне нужно только его выполнить под этим пользователем. Я попробую и отчитаю, спасибо! –
Это сработало, спасибо! Я не понимал, что 'unix_http_server' - это то, что supervisorctl используется для связи с supervisord. Я работаю только как root из-за конфигурации debian по умолчанию, но я отбрасываю привилегии в приложении, поэтому все должно быть хорошо. –