Permitir que todos os usuários de um grupo iniciem e parem o zope usando supervisorctl

1

Estou apenas fazendo algumas alterações na forma como executamos o Zope após um recente comunicado de segurança . No aviso diz:

“Make sure that the Zope/Plone service is running with with minimum privileges. Ideally, the Zope and ZEO services should be able to write only to log and data directories.”

Atualmente, temos um usuário Linux dedicado que executa o buildout, inicia e pára o servidor e que executa o serviço do Zope. Estamos usando o supervisord para gerenciar as duas instâncias do Zope que executamos em paralelo (backstorage backend).

Nosso usuário atual do zope precisa de permissão de escrita em mais do que apenas o diretório log e data para que possa executar o buildout, então optei por criar um usuário linux adicional, zoperun, para realmente executar o serviço zope. O zoperun está no mesmo grupo que o zope e só tem permissões de gravação no diretório var. Tudo isso está funcionando bem, exceto uma coisa: eu gostaria que o usuário original do zope pudesse iniciar e parar as instâncias do zope usando o supervisorctl.

Eu não consigo fazer isso funcionar. Por exemplo, quando tento executar bin/supervisorctl status , obtenho

error: , [Errno 13] Permission denied: file: line: 1

Acho que isso ocorre porque o soquete do supervisor não tem permissões de leitura e gravação em grupo

srw------- 1 zoperun zopeour 0 Sep 30 09:00 supervisor.sock

Eu configurei umask = 002 na configuração supervisord, mas isso não afeta o soquete superctl.

Existe alguma maneira de eu conseguir o que eu gostaria?

    
por scarba05 30.09.2011 / 10:21

1 resposta

5

Dê uma olhada na seção unix-http-server . Altere seu arquivo de configuração como abaixo:

[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))

Isso faz com que o arquivo de soquete possa ser lido, escrito pelos usuários em zoperun group:

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

Finalmente, adicione todos os usuários que você deseja permitir iniciar / parar a instância do Zope no grupo zoperun e testando com o usuário normal, você verá algo como isto:

$ supervisorctl status
foo                              STARTING   
    
por 30.09.2011 / 11:59