Sto riscontrando dei problemi con uno dei nostri script upstart che cambia utente e avvia alcuni processi daemon ruby.
In passato mi sarei semplicemente bash -c "do the business" -l someuserassicurato di usare la -lbandiera per emulare un login.
Finora ha funzionato alla grande, il nostro processo ruby ha generato il seguente errore: require: no such file to load -- rubygems (LoadError)dopo alcune indagini ho riscontrato che questo errore si verifica solo quando eseguo lo script come utente root, ovvero (quando io sudo suo quando sono avviato da upstart).
Penso che questo sia un problema PATH in quanto quando imposto manualmente il percorso prima risolve il problema.
C'è un modo per cambiare utente e caricare l' intero ambiente?
Ho anche provato su user -ce sudo.
Per rendere più semplice il test, sto sudo sueseguendo il "rooting up" ( ) ed eseguo which bundle(bundle è una cosa ruby).
Ecco cosa ottengo:
sudo -i -u webuser which bundle# => nessun outputsu -l webuser -c which bundle# => nessun outputsudo su - webuser -c which bundle# => nessun output
Ma è entrato come utente web
which bundle# => / opt / ruby / bin / bundle
/etc/profile ~/.bash_profile ~/.bash_logine ~/.profile. Per le shell di login, bash le valuta nell'ordine indicato.
su - user -c?