feststellen im programm, ob es mit sudo aufgerufen wurde
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Code: Alles auswählen
%> sudo python -c "import os; print os.getuid()"
0
%> python -c "import os; print os.getuid()"
1000
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Das prueft, ob das Programm als root laeuft. Ob dabei sudo im Spiel ist, kann man nicht feststellen.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Danke schön.cofi hat geschrieben:Fuer C++ gilt dasselbe: Du musst an die UserID rankommen, ich kenn mich da allerdings nicht aus.Code: Alles auswählen
%> sudo python -c "import os; print os.getuid()" 0 %> python -c "import os; print os.getuid()" 1000
Aha, das ist mir zu diesem Zeitpunkt aber gleichgültig, da ich nur wissen möchte, ob es als root läuft. Aber du warst aufmerksam, die Frage wurde so gestellt, gemeint habe ich aber, ob es mit root rechten ausgeführt wird.Rebecca hat geschrieben:Das prueft, ob das Programm als root laeuft. Ob dabei sudo im Spiel ist, kann man nicht feststellen.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
sudo setzt ein paar Umgebungsvariablen für das aufgerufene Programm:
Anhand dieser Variablen kann man feststellen, ob ein Programm durch sudo aufgerufen wurde. $SUDO_USER wird von sudo in bestimmten Situationen selbst verwendet, ist also die zuverlässigste Wahl. Ich wüsste aber nicht, wozu man das brauchen sollte.
Wenn prüfen will, ob ein Programm mit den effektiven Rechten der UID 0 läuft, so sollte man übrigens "os.geteuid()" nutzen.
Code: Alles auswählen
sudo env | grep -i sudo
SUDO_COMMAND=/usr/bin/env
SUDO_USER=lunar
SUDO_UID=1000
SUDO_GID=1000
Wenn prüfen will, ob ein Programm mit den effektiven Rechten der UID 0 läuft, so sollte man übrigens "os.geteuid()" nutzen.
Danke; ja sonst hätte ich noch versuchen können, im Programm die filerechte eines Tesfiles auf root zu ändern, und dann wieder einlesen, ob sie es wirklich sind oder fehler abfragen. Ist aber nicht sehr elegant.lunar hat geschrieben:sudo setzt ein paar Umgebungsvariablen für das aufgerufene Programm:Anhand dieser Variablen kann man feststellen, ob ein Programm durch sudo aufgerufen wurde. $SUDO_USER wird von sudo in bestimmten Situationen selbst verwendet, ist also die zuverlässigste Wahl. Ich wüsste aber nicht, wozu man das brauchen sollte.Code: Alles auswählen
sudo env | grep -i sudo SUDO_COMMAND=/usr/bin/env SUDO_USER=lunar SUDO_UID=1000 SUDO_GID=1000
Wenn prüfen will, ob ein Programm mit den effektiven Rechten der UID 0 läuft, so sollte man übrigens "os.geteuid()" nutzen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, das passende Wort für solch einen Einsatz wäre "grottig". Das würde ja schon bei Read-Only-Dateisystemen scheitern.Francesco hat geschrieben:ja sonst hätte ich noch versuchen können, im Programm die filerechte eines Tesfiles auf root zu ändern, und dann wieder einlesen, ob sie es wirklich sind oder fehler abfragen. Ist aber nicht sehr elegant.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich habe beim letzten Satz einen bösen smilie vergessen.Leonidas hat geschrieben:Ja, das passende Wort für solch einen Einsatz wäre "grottig". Das würde ja schon bei Read-Only-Dateisystemen scheitern.Francesco hat geschrieben:ja sonst hätte ich noch versuchen können, im Programm die filerechte eines Tesfiles auf root zu ändern, und dann wieder einlesen, ob sie es wirklich sind oder fehler abfragen. Ist aber nicht sehr elegant.