Как запустить команду от имени другого пользователя, пока загружается Fedora?

У меня есть сервер, на котором работает Fedora 19. Когда сервер загружается, мне нужно выполнить несколько команд. Я делаю это в /etc/rc.d/rc.local файл. Это хорошо работает. Теперь мне нужно начать nodejs Сервер из этого скрипта.

Я не хочу запускать серверную программу как root, Поэтому я попробовал что-то вроде следующего в rc.local файл.

su myuser -c /home/myuser/project/path/prod_start.sh

Это выполняет prod_start.sh как myuser, Но в prod_start.sh, Я меняю каталог на корневой каталог приложений. Также ожидается, что некоторые переменные среды будут установлены перед запуском. Но так как эти переменные среды определены в bash_profile для пользователя myuser, ни один из них не вступил в силу, и сценарий не удалось.

Мне интересно, как я могу запустить команду от имени другого пользователя со всеми необходимыми для него переменными среды? Должен ли я установить все эти переменные среды на системном уровне, чтобы они были доступны всем пользователям?

1 ответ

Если вы добавите переключатель "-", он загрузит профиль myuser. Другими словами, вы можете загружать переменные окружения профиля без заголовка.

su - myuser -c "cmd_to_execute"
Другие вопросы по тегам