Cara mendapatkan nama pengguna yang meluncurkan `sudo`

12

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?

rubik
sumber
1
Setelah sebagian besar konfigurasi, sudobiarkan HOMEvariabel 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 untuk HOME(bagaimana jika bob berjalan HOME=/home/joe sudo your_script?). Anda mungkin harus mengatur euid Anda ke pengguna panggilan (diberikan oleh SUDO_UID) sebelum membuat akses sistem file apa pun (terlepas dari apa pun yang sebenarnya membutuhkan izin root di skrip Anda).
Gilles 'SANGAT berhenti menjadi jahat'
Terima kasih untuk nasehatnya. Ok, saya akan mengatur euiduntuk saya SUDO_UID.
rubik

Jawaban:

22

Ketika Anda menembakkan sesuatu dengan sudobeberapa variabel lingkungan diatur, khususnya saya pikir Anda sedang mencari SUDO_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

Caleb
sumber
1
+1 WoW! Terima kasih banyak! Itulah tepatnya yang saya cari. Saya pikir saya akan menggunakan SUDO_UIDdan SUDO_USER. Terima kasih lagi.
rubik
1
SUDO_USERpersis apa yang saya cari.
phoenix