Saya mengalami beberapa masalah dengan skrip pemula kami yang mengubah pengguna dan memulai beberapa proses daemon ruby.
Di masa lalu saya hanya akan bash -c "do the business" -l someuser
memastikan untuk menggunakan -l
bendera untuk meniru login.
Ini telah bekerja dengan baik sampai sekarang, proses ruby kami telah melempar kesalahan berikut: require: no such file to load -- rubygems (LoadError)
setelah beberapa penyelidikan saya menemukan kesalahan ini hanya terjadi ketika saya menjalankan skrip sebagai pengguna root, yaitu (ketika saya sudo su
atau ketika sedang dijalankan oleh pemula).
Saya pikir ini adalah masalah PATH ketika saya secara manual mengatur path terlebih dahulu untuk menyelesaikan masalah.
Apakah ada cara untuk mengubah pengguna dan memuat seluruh lingkungan?
Saya juga sudah mencoba su user -c
dan sudo
.
Untuk membuatnya lebih mudah untuk menguji saya "rooting up" ( sudo su
) dan berjalan which bundle
(bundel adalah hal yang ruby).
Inilah yang saya dapatkan:
sudo -i -u webuser which bundle
# => tidak ada outputsu -l webuser -c which bundle
# => tidak ada outputsudo su - webuser -c which bundle
# => tidak ada output
Tapi dia masuk sebagai pengguna web
which bundle
# => / opt / ruby / bin / bundle
/etc/profile
~/.bash_profile
~/.bash_login
dan ~/.profile
. Untuk shell login, bash mengevaluasi ini dalam urutan yang diberikan.
su - user -c
?