Überprüfen Sie die Administratorrechte im Python-Skript

15

Wie überprüfe ich, ob mein Python-Skript unter BSD-ähnlichen Betriebssystemen mit Administratorrechten (sudo) ausgeführt wird? Es muss eine benutzerfreundliche Warnung angezeigt werden, damit sie ohne Administratorrechte ausgeführt werden kann.

grigoryvp
quelle

Antworten:

37

Wie wäre es damit? Überprüfen Sie ob uid == 0:

[kbrandt@kbrandt-admin: ~] python -c 'import os; print os.getuid()'
196677

[kbrandt@kbrandt-admin: ~] sudo python -c 'import os; print os.getuid()'
0
Kyle Brandt
quelle
1
Ich habe es tatsächlich gekürzt :-). Ich benutze ebenfalls Open für die Linux-Authentifizierung, die durch Hashing der Windows-SID eine große UID erzeugt.
Kyle Brandt
3

Wie wäre es damit:

import os
username=os.system("whoami")
if username is not "root":
    print "You aren't root"
else:
    print "Hello, "+username
Severe_admin
quelle
2

Versuchen Sie nicht, einen Benutzernamen mit der Zeichenfolge "root" abzugleichen.

Im Allgemeinen müssen Sie entweder weniger effiziente Callouts bereitstellen, um die Textdarstellung der UID zu erhalten, oder Sie verlassen sich auf Umgebungsvariablen, die möglicherweise nicht so vertrauenswürdig sind.

Dan Carley
quelle