I'm trying to set up a Sage Cell Server (an open source mathematical engine) running as an unprivileged user. I've created the unprivileged user
sagecell to do the job. It is installed correctly and, if I run it normally using
sagecell@primary-server:~/sage/devel/sagecell$ ../../sage web_server.py
then everything works as expected. An interesting requirement of this application (that may or may not be relevant) is that it requires a passwordless ssh login (i.e.,
ssh localhost works). I've set up the unprivileged account with an ssh-key to do the job.
Now, rather than manually making a screen session after booting up the server and running it in a screen session, I tried making an upstart job with this setup:
description "Sage Cell Server Starter" start on runlevel  stop on starting rc runlevel= kill timeout 5 exec su -s /bin/sh -c 'exec "$0" "$@"' sagecell -- /home/sagecell/sage/sage /home/sagecell/sage/devel/sagecell/web_server.py
This, however, does not work. Looking at /var/log/upstart/sagecell.log gives the following error:
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: It should be noted that the application binds to port 8080 (and only 8080 as far as I'm aware). The important thing is that it works without privileges when I run it but not when Upstart runs it as the same user.
Can anyone tell me why an application that works perfectly fine under the user
sagecell fails to run under an upstart job running the script AS