Как запустить команду от имени другого пользователя, пока загружается 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"