У меня возникли некоторые проблемы с нашим авторским скриптом, который меняет пользователя и запускает несколько процессов ruby daemon.
В прошлом я просто bash -c "do the business" -l someuser
использовал -l
флаг для эмуляции входа в систему.
До сих пор это прекрасно работало, наш процесс ruby выдавал следующую ошибку: require: no such file to load -- rubygems (LoadError)
после некоторого исследования я обнаружил, что эта ошибка возникает только тогда, когда я запускаю скрипт от имени пользователя root, то есть (когда я sudo su
запускаю upstart).
Я думаю, что это проблема ПУТИ, так как, когда я сначала вручную устанавливаю путь, это решает проблему.
Есть ли способ изменить пользователя и загрузить всю среду?
Я тоже пробовал su user -c
и sudo
.
Чтобы упростить тестирование, я "рутирую" ( sudo su
) и работаю which bundle
(связка - вещь рубина).
Вот что я получаю:
sudo -i -u webuser which bundle
# => нет выводаsu -l webuser -c which bundle
# => нет выводаsudo su - webuser -c which bundle
# => нет вывода
Но ssh'd в качестве веб-пользователя
which bundle
# => / opt / ruby / bin / bundle
/etc/profile
~/.bash_profile
~/.bash_login
и ~/.profile
. Для оболочек входа в систему bash оценивает их в заданном порядке.
su - user -c
?