Bir noktada uygulamamın / etc'de bir dosya oluşturmak veya kök ayrıcalıklarına sahip komutları çalıştırmak gibi yönetim görevleri yapması gerekir.
Sadece bir Soru-Cevap yapabileceğini biliyorum:
os.popen("pkexec foo bar")
Ama aynı zamanda bunun öngörülen temiz yol olmadığını biliyorum. Kullanıcı için bir tür can sıkıcı, çünkü oturum benzeri bir işlem yapmak yerine her zaman şifresini tekrar girmesi gerekiyor.
Kimlik doğrulaması için python örneğini bulduğum için çok iyimserdim .
Hemen çalışan basit bir örnek:
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
Yetkilendirmeden sonra senaryoda sadece os.popen () - komutları ile devam edebileceğimi düşünüyordum. Şimdi daha iyi biliyorum :(
Yukarıdaki örnekte tuple sonucunu görebiliyorum, ancak daha sonraki belgelerde bu noktada devam etmek için bir çalışma kodu bulamadım.
Bu sonuçla ne yapmam gerekiyor? İhtiyacım olan görevleri nasıl yerine getirebilirim? Kullanılabilir yöntemleri sunan örneklerle bir python referansı var mı?
Dir () kullanarak yetkilendirme yöntemlerini listelemeye çalıştım, ancak nasıl devam edeceğine dair herhangi bir ipucu bulamadım.
Gerçekten benim fallback kullanmaktan kaçınmak istiyorum ama benim son çare olurdu. Lütfen doğru şekilde yapmama yardım et :)
Teşekkürler ve saygılar
André
Düzenle:
Bunu işe getirmedim ve gksu ile programımı başlatarak eski çözümümü / opt / 'dan çalışmadığı için, nihayet programın en azından almak için programın işe yaramasını sağlamak için bin şifre istemek zorunda kaldım. uygulama hesaplaşmasında bir T-Shirt.
Sorunu fark etmedim çünkü önce hızlı bir şekilde paylaştım. Orada her şey yolunda gitti. Başlangıçta bir kez şifre sorma. Tamamen aşağıdayım. AppShowdown'a katkım https://launchpad.net/armorforge idi . ;-(