Masalah saya: Saya punya program Python, dan pengguna meluncurkannya menggunakan sudo
. Terkadang saya harus mendapatkan rumah pengguna, dan saya bisa melakukan ini hanya dengan mengetahui namanya:
import pwd
pwd.getpwnam(username)
Jadi: bagaimana saya bisa mendapatkan nama pengguna yang meluncurkan program?
sudo
biarkanHOME
variabel lingkungan tetap utuh (ini dapat diganti pada saat kompilasi atau run-time). Tetapi Anda mungkin atau mungkin tidak dapat menggunakan variabel lingkungan, tergantung pada apa yang Anda inginkan terjadi jika pengguna menentukan nilai yang berbeda untukHOME
(bagaimana jika bob berjalanHOME=/home/joe sudo your_script
?). Anda mungkin harus mengatur euid Anda ke pengguna panggilan (diberikan olehSUDO_UID
) sebelum membuat akses sistem file apa pun (terlepas dari apa pun yang sebenarnya membutuhkan izin root di skrip Anda).euid
untuk sayaSUDO_UID
.Jawaban:
Ketika Anda menembakkan sesuatu dengan
sudo
beberapa variabel lingkungan diatur, khususnya saya pikir Anda sedang mencariSUDO_UID
. Ini harus dapat diakses oleh program apa pun yang berjalan melalui saluran biasa mengakses variabel lingkungan.Anda dapat melihat hal-hal lain yang diatur dengan menipu seperti ini dari shell:
sudo env | grep SUDO
sumber
SUDO_UID
danSUDO_USER
. Terima kasih lagi.SUDO_USER
persis apa yang saya cari.