Tengo algunos problemas con un script nuestro de inicio que cambia de usuario e inicia algunos procesos de Ruby Daemon.
En el pasado, simplemente me bash -c "do the business" -l someuser
aseguraba de usar la -l
bandera para emular un inicio de sesión.
Esto ha funcionado muy bien hasta ahora, nuestro proceso de ruby ha estado arrojando el siguiente error: require: no such file to load -- rubygems (LoadError)
después de una investigación, encontré que este error solo ocurre cuando ejecuto el script como usuario raíz, es decir (cuando yo sudo su
o cuando se ejecuta por arranque).
Creo que este es un problema de RUTA ya que cuando configuro manualmente la ruta primero resuelve el problema.
¿Hay alguna manera de cambiar de usuario y cargar todo el entorno?
También lo he intentado su user -c
y sudo
.
Para facilitar la prueba, estoy "rooteando" ( sudo su
) y ejecutándome which bundle
(el paquete es una cosa de rubí).
Esto es lo que obtengo:
sudo -i -u webuser which bundle
# => sin salidasu -l webuser -c which bundle
# => sin salidasudo su - webuser -c which bundle
# => sin salida
Pero ssh'd como usuario web
which bundle
# => / opt / ruby / bin / bundle
/etc/profile
~/.bash_profile
~/.bash_login
y ~/.profile
. Para shells de inicio de sesión, bash los evalúa en el orden dado.
su - user -c
?