Я хочу написать сценарий службы инициализации, который запускает программу от имени конкретного пользователя (а не root). Затем я chkconfig этот скрипт и установлю на свой рабочий уровень.
Я мог бы просто поместить в сценарий команду su, но мне было интересно, есть ли лучший способ сделать это.
Спасибо, Гарри
Вы можете просто su
. Пароль вам не понадобится, потому что сценарий изначально будет запущен от имени пользователя root.
Также есть runuser
команда.
Если вы используете /etc/init.d/functions
вы можете использовать daemon
функция, в которой есть возможность указать пользователя, от имени которого запускается.
Я лично склоняюсь к последнему при прочих равных условиях.
Если вы напишете сценарий инициализации в стиле redhat, daemon
функция имеет --user
вариант.
daemon --user=$runasuser --pidfile="$PIDFILE" $yourbinary $youroptions
Лучше всего использовать sudo и изменить необходимые файлы, чтобы это происходило автоматически, без запроса пароля. Если вы не против того, чтобы пароль был в скрипте, я думаю, вы можете сделать что-то вроде
echo password | sudo -S -u username command
Что делаешь? Может есть способ получше?
РЕДАКТИРОВАТЬ
Спасибо TCampbell