Я просто вношу некоторые изменения в то, как мы запускаем 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