Ü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.

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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.