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?
euid
a SUDO_UID
.
sudo
laHOME
variabile 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).