Python-Skript als root ausführen (mit sudo) - Wie lautet der Benutzername des effektiven Benutzers?

7

Ich habe vor Kurzem begonnen, ConfigParser () für meine Python-Skripte zu verwenden, um ihnen einige Funktionen für Konfigurationsdateien hinzuzufügen. Ich weiß, wie man es benutzt, aber ich habe ein Problem. Mein Skript muss als root-Benutzer mit sudo ausgeführt werden. Die Konfigurationsdateien sind in ~/.config/scriptconfig/ , aber wenn Sie ein Skript als sudo ausführen, werden die Benutzer temporär in root geändert, sodass die Konfigurationsdateien nicht gefunden werden. Ich möchte die Konfigurationsdatei des Benutzers effective aufrufen, damit /home/myuser/.config/scriptconfig/config.cfg anstelle von /root/.config/scriptconfig/config.cfg abgerufen wird, was nicht existiert.

Ich brauche das Skript, um auf verschiedenen Maschinen laufen zu können, nicht nur bei mir. Also muss ich das Home-Verzeichnis des effektiven Benutzers

holen

Hier ist ein Beispiel für den Code, den ich verwenden möchte:

%Vor% Es sollte den Wert von example aus der Konfigurationsdatei ausgeben, aber wenn er als sudo ausgeführt wird, lautet der Pfad /home/root , sodass die Konfigurationsdatei nicht gefunden wird.     
Jmariz 19.04.2011, 19:21
quelle

3 Antworten

20

Wenn Sie Ihren Skript mit sudo ( sudo myscript.py ) laufen dann die Umgebungsvariable $USER wird root und die Umgebungsvariable $SUDO_USER wird der Name des Benutzers, der den Befehl ausgeführt sudo myscript.py . Das folgende ist nur eine Erläuterung des vorherigen Beitrags von Cédric Julien. Stellen Sie sich das folgende Szenario vor:

Ein Linux-Benutzer bob ist im System angemeldet und besitzt sudo-Rechte. Er schreibt das folgende Python-Skript mit dem Namen myscript.py :

%Vor%

Er macht dann das Skript ausführbar mit chmod +x myscript.py und führt dann sein Skript mit sudo-Berechtigungen mit dem Befehl:

sudo ./myscript.py

Die Ausgabe dieses Programms wird (mit Python 2.x.x):

%Vor%

Wenn bob das Programm ohne Sudoprivilegien mit

ausführt

./myscript.py

Er erhält die folgende Ausgabe:

%Vor%     
TheInderpreter 22.06.2011 23:58
quelle
4

Wenn Sie den Benutzer abrufen möchten, der vor dem Starten des Befehls sudo angemeldet war, wird er in der Umgebungsvariablen SUDO_USER gespeichert.

%Vor%

Sie haben auch die SUDO_UID und SUDO_GID für den Benutzer-ID und Gruppen-ID.

    
Cédric Julien 22.04.2011 10:22
quelle
3

Das funktioniert nicht.

%Vor%

Also benutze es nicht.

Du willst das.

%Vor%

Ссылка

Oder vielleicht das.

%Vor%     
S.Lott 19.04.2011 22:12
quelle

Tags und Links