У меня есть сервер, на котором работает 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 ответ1

1

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

su - myuser -c "cmd_to_execute"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .