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?


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.