feststellen im programm, ob es mit sudo aufgerufen wurde
Verfasst: Montag 9. August 2010, 16:20
Hallo, der betreff sagt es ja. Kann ich das im Programm feststellen? Würde mich auch für C++ interessieren.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
%> sudo python -c "import os; print os.getuid()"
0
%> python -c "import os; print os.getuid()"
1000
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.
Code: Alles auswählen
sudo env | grep -i sudo
SUDO_COMMAND=/usr/bin/env
SUDO_USER=lunar
SUDO_UID=1000
SUDO_GID=1000
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.
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.
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.