O trabalho de upstart como usuário não privilegiado falha com a permissão negada

1

Estou tentando configurar um Sage Cell Server (um mecanismo matemático de código aberto) rodando como um usuário sem privilégios. Eu criei o usuário sem privilégios sagecell para fazer o trabalho. Ele está instalado corretamente e, se eu o executar normalmente usando

sagecell@primary-server:~/sage/devel/sagecell$ ../../sage web_server.py

então tudo funciona como esperado. Um requisito interessante deste aplicativo (que pode ou não ser relevante) é que ele requer um login ssh sem senha (por exemplo, ssh localhost works). Eu configurei a conta sem privilégios com uma chave ssh para fazer o trabalho.

Agora, em vez de fazer manualmente uma sessão de tela após inicializar o servidor e executá-lo em uma sessão de tela, tentei criar um trabalho inicial com essa configuração:

description "Sage Cell Server Starter"

start on runlevel [2345]
stop on starting rc runlevel=[016]

kill timeout 5

exec su -s /bin/sh -c 'exec "$0" "$@"' sagecell -- /home/sagecell/sage/sage /home/sagecell/sage/devel/sagecell/web_server.py

Isso, no entanto, não funciona. Olhando para /var/log/upstart/sagecell.log, aparece o seguinte erro:

2013-02-20 00:11:09,665 sagecell:INFO starting tornado web server
Traceback (most recent call last):
  File "/home/sagecell/sage/devel/sagecell/web_server.py", line 78, in <module>
    application = SageCellServer()
  File "/home/sagecell/sage/devel/sagecell/web_server.py", line 57, in __init__
    kernel_timeout=kernel_timeout)
  File "/home/sagecell/sage-5.7.rc0/devel/sagecell-main/trusted_kernel_manager.py", line 28, in __init__
    self._sender = sender.AsyncSender() # Manages asynchronous communication
  File "/home/sagecell/sage-5.7.rc0/devel/sagecell-main/sender.py", line 22, in __init__
    self.router.bind(self.filename)
  File "socket.pyx", line 489, in zmq.core.socket.Socket.bind (zmq/core/socket.c:4797)
zmq.core.error.ZMQError: Permission denied

EDIT: Deve-se notar que o aplicativo se liga à porta 8080 (e apenas 8080, tanto quanto eu sei). O importante é que ele funciona sem privilégios quando eu o executo, mas não quando o Upstart o executa como o mesmo usuário.

Alguém pode me dizer por que um aplicativo que funciona perfeitamente bem com o usuário sagecell não é executado em um job iniciante executando o script AS sagecell ?

    
por Logan 21.02.2013 / 20:11

0 respostas

Tags