Я только что закончил настройку руководитель для запуска моих экземпляров Gunicorn, и мне было интересно, есть ли способ по умолчанию, позволяющий обычному пользователю запускать supervisorctl для запуска / остановки веб-сайтов. Я думал добавить некоторую конфигурацию sudo, которая позволила бы этому пользователю запускать его, но потом я думаю, что это может открыть некоторую лазейку, через которую злоумышленник может запускать вещи от имени root. Я знаю, что могу установить user = someuser в разделе конфигурации [supervisord], но тогда мне пришлось бы дать разрешение этому пользователю для файлов по всей файловой системе, для журналов, создания сокетов и т. Д. Это было бы проблемой, потому что стандартное развертывание пакета ubuntu предполагает, что супервизор будет запущен от имени пользователя root.
Итак, что лучше, или есть другая альтернатива?
Разверните свои веб-сайты в buildout, создайте супервизор внутри него, и тогда bin / supervisorctl start / stop будет идентификатором пользователя, вся конфигурация будет в buildout, и для нее не потребуется root.
sudo - действительно лучшая альтернатива здесь. Если вы боитесь, что они могут передать аргументы supervisorctl
Кроме как start
/stop
, возможно, создать два небольших двоичных файла (не скрипты!), которые ничего не делают, кроме вызова supervisorctl start
/stop
(и не используя system(3)
но exec(3)
) и разрешить вызов только этих двух конкретных двоичных файлов для пользователя.