sprawdź uprawnienia administratora w skrypcie python

15

Jak sprawdzić, czy mój skrypt Pythona działa w ramach uprawnień administratora (sudo) w systemie operacyjnym podobnym do BSD? Konieczne jest wyświetlenie przyjaznego ostrzeżenia, aby zostało wykonane bez uprawnień administratora.

grigoryvp
źródło

Odpowiedzi:

37

Co powiesz na to? Sprawdź, czy 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
źródło
1
Właściwie to skróciłem :-). Używam również otwartego do uwierzytelniania systemu Linux, który tworzy duży identyfikator UID poprzez mieszanie identyfikatora SID systemu Windows.
Kyle Brandt
3

Co powiesz na to:

import os
username=os.system("whoami")
if username is not "root":
    print "You aren't root"
else:
    print "Hello, "+username
Surowy_admin
źródło
2

Nie ulegaj pokusie, aby dopasować nazwę użytkownika do ciągu „root”.

Zasadniczo albo będziesz musiał dostarczyć mniej wydajne objaśnienia, aby uzyskać tekstową reprezentację UID, albo będziesz polegać na zmiennych środowiskowych, które mogą nie być tak wiarygodne.

Dan Carley
źródło