Tampaknya ketika sudo
menggunakan sudo -u $user
itu menggunakan bahwa lingkungan root masih digunakan. Bagaimana saya bisa sudo
memanfaatkan lingkungan pengguna? sebagai catatan khusus tidak semua pengguna yang akan saya gunakan di ini memiliki shell login.
19
# whoami => root # sudo -u user whoami => user
sudo -u user
analog dengansu user
untuk mengganti env in su yang harus Anda gunakansu - user
-u
juga mengabaikan kelompok ... Saya mencoba sesuatu dari root (menggunakan sudo -u bawah) dan itu berhasil, ternyata itu bukan untuk pengguna. .. jadi saya harus memastikan saya menjalankan perintah dengan cara yang akan memiliki semua keterbatasan dan masalah lingkungan.Jawaban:
Mencoba
sudo -i -u $user
sumber
/etc/passwd
:( tapi saya kira ...-E
adalah yang menjaga lingkungan, yaitu semua variabel lingkungan dll ada di sana, meskipun masih belum disetelPATH
danLD_LIBRARY_PATH
ke pengguna pemanggil.$SUDO_USER
dapat digunakanman sudoers
pada Debian menyebutkan kemungkinan lain. Tidak yakin ke arah mana Anda inginkan, tetapi pertanyaan Anda terdengar seperti Anda ingin memilikienv_reset
opsi dari/etc/sudoers
- yang sebaliknya pada dasarnya adalahenv_keep
daftar. Untuk mengatur yang tepat,HOME
Anda dapat menggunakan-H
opsi untuksudo
secara langsung atau, sekali lagisudoers
, denganalways_set_home
opsi.Atau Anda dapat menggunakan
env_file
untuk menentukan lingkungan yang tepat yang ingin Anda lewati. Namun, saya pikir yang terbaik adalah jika Anda memeriksaenv_*
opsi dariman sudoers
, karena/etc/sudoers
mengontrol semuanya dan itulah titik untuk beralih ke.Inilah bagian dari konteks yang saya gunakan
env_reset
di dalamsudoers
file saya :sumber
Ketika sudo ing variabel lingkungan tidak dipertahankan.
Dalam kasus saya, saya menggunakan dokumen-sini .
Anda memasukkan tindakan Anda seperti
my_script.sh
di dalam DOKUMEN DI SINI:Anda tidak boleh meletakkan variabel langsung di sini, karena mereka akan ditafsirkan dari pengguna Anda saat ini.
Jika
$MY_VAR
tidak disetel untuk pengguna yang menjalankan skrip, skrip tidak akan ditetapkan.Variabel Anda harus dipanggil di dalam skrip Anda, atau Anda harus menghindarinya
\
.Misalnya.
Di sini,
$MY_VAR
akan memilikisome_user
nilai kontekstual.sumber
su - some_user
bukansu -u some_user
.