Назад | Перейти на главную страницу

Разрешить всем пользователям группы запускать и останавливать zope с помощью supervisorctl

Я просто вношу некоторые изменения в то, как мы запускаем Zope после недавнего совет по безопасности. В уведомлении говорится:

«Убедитесь, что служба Zope / Plone работает с минимальными привилегиями. В идеале службы Zope и ZEO должны иметь возможность писать только в каталоги журналов и данных ».

В настоящее время у нас есть специальный пользователь Linux, который запускает сборку, запускает и останавливает сервер и запускает службу Zope. Мы используем руководитель для управления двумя экземплярами Zope, которые мы запускаем параллельно (серверная часть relstorage).

Нашему текущему пользователю zope необходимо разрешение на запись не только в каталог журналов и данных, чтобы он мог запускать buildout, поэтому я решил создать дополнительного пользователя linux, zoperun, для фактического запуска службы zope. zoperun находится в той же группе, что и zope, и имеет права записи только в каталог var. Все работает нормально, за исключением одного: я бы хотел, чтобы исходный пользователь zope мог запускать и останавливать экземпляры zope с помощью supervisorctl.

Я не могу заставить это работать. Например, когда я пытаюсь запустить bin/supervisorctl status я получил

ошибка:, [Errno 13] Permission denied: file: line: 1

Я думаю, это потому, что сокет супервизора не имеет разрешений на чтение и запись для группы

srw ------- 1 zoperun zopeour 0 30 сен 09:00 supervisor.sock

Я установил umask = 002 в конфигурации супервизора, но это не влияет на этот сокет superctl.

Есть ли способ достичь того, чего я хочу?

Взгляни на unix-http-сервер раздел. Измените файл конфигурации, как показано ниже:

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0770                  ; sockef file mode (default 0700)
chown=zope:zoperun          ; socket file uid:gid owner
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

Это делает файл сокета доступным для чтения и записи пользователями в zoperun группа:

ll /tmp/supervisor.sock 
srwxrwx--- 1 zope zoperun 0 Sep 30 16:54 /tmp/supervisor.sock

Наконец, добавьте всех пользователей, которым вы хотите разрешить запуск / остановку экземпляра Zope, в zoperun group и тестирования с обычным пользователем, вы увидите что-то вроде этого:

$ supervisorctl status
foo                              STARTING