Назад | Перейти на главную страницу

Начать процесс от имени конкретного пользователя

У меня есть следующий сценарий, который перезапускается Бог когда я перезагружаю свой сервер (Ubuntu). Как я могу заставить бога запускаться как пользователь "рельсы"?

#!/bin/sh

### BEGIN INIT INFO
# Provides:             god
# Required-Start:       $all
# Required-Stop:        $all
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    God
### END INIT INFO

NAME=god
DESC=god
PID=/home/rails/xxx/shared/pids/god.pid
LOG=/home/rails/xxx/shared/log/god.log

set -e

# Make sure the binary and the config file are present before proceeding
test -x /usr/bin/god || exit 0

# Create this file and put in a variable called GOD_CONFIG, pointing to
# your God configuration file
test -f /etc/default/god && . /etc/default/god
[ $GOD_CONFIG ] || exit 0

. /lib/lsb/init-functions

RETVAL=0

case "$1" in
  start)
    echo -n "Starting $DESC: "
    /bin/su rails -c '/usr/bin/god -c $GOD_CONFIG -P $PID -l $LOG'
    RETVAL=$?
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    kill `cat $PID`
    RETVAL=$?
    echo "$NAME."
    ;;
  restart)
    echo -n "Restarting $DESC: "
    kill `cat $PID`
    /bin/su rails -c '/usr/bin/god -c $GOD_CONFIG -P $PID -l $LOG'
    RETVAL=$?
    echo "$NAME."
    ;;
  status)
    /bin/su rails -c '/usr/bin/god status'
    RETVAL=$?
    ;;
  *)
    echo "Usage: god {start|stop|restart|status}"
    exit 1
    ;;
esac

exit $RETVAL

Любая помощь с этим была бы потрясающей, так как я совсем неопытный игрок, когда дело касается серверов.

Команда sudo используется для запуска вещей от имени других пользователей, например:

sudo -u rails ls $someDir

Поэтому я думаю, что следующее должно работать (попробуйте и убедитесь):

sudo -u rails /usr/bin/god -c $GOD_CONFIG -P /var/run/god.pid -l /var/log/god.log

Кроме того, проверьте страницу руководства sudo, команда god зависит от некоторых установленных переменных среды ...

Обычно это выполняется в сценариях инициализации с su:

su rails -c "/usr/bin/god -c $GOD_CONFIG -P /var/run/god.pid -l /var/log/god.log"

Я не тестировал это, поэтому у меня может быть что-то странное не так.

Кроме того, предполагая, что он до сих пор работал от имени root, убедитесь, что ваши файлы pid и log не принадлежат root и недоступны для пользовательских рельсов.

Проверьте разрешения на свой скрипт. Они должны быть доступны для чтения и исполнения.

Кроме того, в нескольких местах вашего скрипта у вас есть:

usr/bin/god ...

Вероятно, это должно быть:

/usr/bin/god ...