¿Cómo puedo hacer que este demonio / init se ejecute como un usuario no root?


19

Tengo un guión de inicio para iniciar un demonio. El problema es que se ejecuta como root. Me gustaría que se ejecute como un usuario llamado "desplegar". Ubuntu 12.04

#! /bin/sh

# File: /etc/init.d/unicorn

### BEGIN INIT INFO
# Provides:          unicorn
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the unicorn web server
# Description:       starts unicorn
### END INIT INFO

DAEMON=/usr/local/bin/unicorn_rails
DAEMON_OPTS="-c /var/www/current/config/unicorn.rb -D"
NAME=unicorn
DESC="Unicorn"
PID=/var/www/current/shared/pid/unicorn.pid

case "$1" in
  start)
    echo -n "Starting $DESC: "
    $DAEMON $DAEMON_OPTS
    echo "$NAME."
    ;;
  *)
    echo "Usage: $NAME {start|stop|restart|reload}" >&2
    exit 1
    ;;
esac

exit 0

2
Cambie $DAEMON $DAEMON_OPTSasu - deploy -c "$DAEMON $DAEMON_OPTS"
margarita el

Tenga cuidado de no iniciar el deamon utilizando el comando "servicio" mientras realiza la prueba, ya que la opción chuid no tendrá efecto y el proceso se ejecutará como root.
pasqal

¿Se invocan todos los scripts en init.d después de que el núcleo ya conoce a los usuarios en el sistema?
ransh

Respuestas:


18

Usa la start-stop-daemonutilidad para iniciar tu demonio. Pase la opción -c(o --chuid) para ejecutarlo como un usuario diferente. Encontrarás algunos ejemplos en /etc/init.d/*.

case $1 in
  start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --chuid deploy --pidfile "$PID" --start --exec "$DAEMON" -- $DAEMON_OPTS
    echo "$NAME."
    ;;
…

¿Se invocan todos los scripts init.d después de que el núcleo ya conoce a todos los usuarios del sistema?
ransh

@ransh No estoy seguro de lo que estás preguntando. El núcleo realmente no "conoce" a los usuarios: en lo que a él respecta, un usuario es solo un número, y no le importa cuál sea el número, excepto que los procesos que se ejecutan como usuario 0 pueden hacer muchas cosas que otros usuarios no pueden hacer. .
Gilles 'SO- deja de ser malvado'

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.