W pewnym momencie moja aplikacja musi wykonywać zadania administracyjne, takie jak tworzenie pliku w / etc lub uruchamianie poleceń z uprawnieniami roota.
Wiem, że po prostu mogę zrobić Q&D:
os.popen("pkexec foo bar")
Ale wiem też, że nie jest to przewidziany czysty sposób na zrobienie tego. Pewne irytujące dla użytkownika, ponieważ zawsze musi ponownie wprowadzić hasło zamiast obsługi podobnej do sesji.
Byłem bardzo optymistyczny, ponieważ znalazłem przykładowy python do uwierzytelnienia .
To prosty przykład, który działa natychmiast:
import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority')
authority = dbus.Interface(proxy, dbus_interface='org.freedesktop.PolicyKit1.Authority')
system_bus_name = bus.get_unique_name()
subject = ('system-bus-name', {'name' : system_bus_name})
action_id = 'org.freedesktop.policykit.exec'
details = {}
flags = 1 # AllowUserInteraction flag
cancellation_id = '' # No cancellation id
result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id)
print result
Byłem dość naiwny, myśląc, że po autoryzacji mógłbym po prostu kontynuować pracę w skrypcie z kilkoma komendami os.popen (). Teraz wiem lepiej :(
Widzę wynik krotki w powyższym przykładzie, ale w dalszej dokumentacji nie mogłem znaleźć działającego kodu do uruchomienia w tym momencie.
Co mam wspólnego z tym wynikiem? Jak mogę kontynuować wykonywanie potrzebnych mi zadań? Czy istnieje odwołanie do Pythona z przykładami oferującymi dostępne metody?
Próbowałem wymienić metody autoryzacji za pomocą dir (), ale nie mogłem znaleźć żadnej wskazówki, jak to zrobić.
Naprawdę chcę uniknąć korzystania z mojej rezerwy, ale to byłaby moja ostatnia deska ratunku. Pomóżcie mi to zrobić we właściwy sposób :)
Dziękuję i pozdrawiam
André
Edytować:
Ponieważ nie przyniosłem tego do skutku, a moje poprzednie rozwiązanie, uruchamiając program z gksu, nie działa z / opt /, w końcu musiałem się poddać i zaimplementować tysiąc zapytań o hasło, aby program był niezbędny do uzyskania przynajmniej koszulka w pokazie aplikacji.
Nie zauważyłem problemu, ponieważ najpierw zrobiłem szybkie udostępnianie. Tam wszystko działało poprawnie. Pytanie o hasło na początku. Jestem teraz całkowicie przygnębiony. Mój wkład w AppShowdown to https://launchpad.net/armorforge . ;-(