Il mio problema: ho un programma Python e l'utente lo avvia usando sudo. A volte devo ottenere la casa dell'utente, e posso farlo solo conoscendo il suo nome:
import pwd
pwd.getpwnam(username)
Quindi: come posso ottenere il nome dell'utente che ha avviato il programma?
euida SUDO_UID.
sudolaHOMEvariabile di ambiente rimane intatta (ciò può essere sovrascritto in fase di compilazione o di runtime). Ma potresti o non essere in grado di utilizzare la variabile d'ambiente, a seconda di cosa vuoi che accada se l'utente specifica un valore diverso perHOME(cosa succede se bob viene eseguitoHOME=/home/joe sudo your_script?). Probabilmente dovresti impostare il tuo euid sull'utente chiamante (dato daSUDO_UID) prima di effettuare qualsiasi accesso al filesystem (a parte qualsiasi cosa richieda effettivamente l'autorizzazione di root nel tuo script).