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