Mein Problem: Ich habe ein Python-Programm und der Benutzer startet es mit sudo
. Manchmal muss ich das Haus des Benutzers erreichen, und ich kann dies nur tun, wenn ich seinen Namen kenne:
import pwd
pwd.getpwnam(username)
Also: Wie kann ich den Namen des Benutzers ermitteln, der das Programm gestartet hat?
euid
auf einstellen SUDO_UID
.
sudo
bleibt dieHOME
Umgebungsvariable intakt (dies kann zur Kompilierungs- oder Laufzeit überschrieben werden). Möglicherweise können Sie die Umgebungsvariable jedoch verwenden oder nicht, je nachdem, was passieren soll, wenn der Benutzer einen anderen Wert für angibtHOME
(was ist, wenn Bob ausgeführt wirdHOME=/home/joe sudo your_script
?). Sie sollten Ihre euid wahrscheinlich auf den aufrufenden Benutzer (angegeben vonSUDO_UID
) einstellen, bevor Sie auf das Dateisystem zugreifen (abgesehen von dem, was tatsächlich die Root-Berechtigung in Ihrem Skript erfordert).