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

1871
Navaneeth K N

У меня есть сервер, на котором работает 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, ни одна из них не вступила в силу, и сценарий завершился ошибкой.

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

0
Почему бы вам просто не запустить его при входе в систему? Запустите ваш скрипт в ваших файлах `~ / bash_login` или` ~ / .Xsession`. terdon 10 лет назад 0
Это безголовый сервер. Так что XSession там не будет. `bash_login` также не является опцией, так как он запускается при входе в систему через ssh. Navaneeth K N 10 лет назад 0
Ну, вы не можете иметь все это. Вы можете установить свои переменные в самом скрипте. Вы можете запустить скрипт из `~ / .bash_profile`. Вы могли бы заставить его работать с `su myuser bash -c" script.sh "`, так как это, вероятно, прочитало бы `~ / .bash_profile`. terdon 10 лет назад 0

1 ответ на вопрос

1
JoshOfAllTrades

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

su - myuser -c "cmd_to_execute" 

Похожие вопросы