Pada titik tertentu aplikasi saya perlu melakukan tugas-tugas administratif seperti membuat file di / etc atau menjalankan perintah dengan root priveleges.
Saya tahu hanya bisa melakukan Q&D:
os.popen("pkexec foo bar")
Tetapi saya juga tahu bahwa ini bukan cara yang bersih untuk melakukannya. Semacam menjengkelkan bagi pengguna karena ia selalu perlu memasukkan kembali kata sandinya daripada memiliki penanganan seperti sesi.
Saya sangat optimis ketika saya menemukan contoh python untuk otentikasi .
Ini adalah contoh sederhana yang bekerja dengan segera:
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
Saya sudah cukup naif berpikir bahwa setelah otorisasi saya bisa melanjutkan dalam script dengan beberapa perintah os.popen () -. Sekarang saya tahu lebih baik :(
Saya dapat melihat hasil-tuple pada contoh di atas, tetapi dalam dokumentasi lebih lanjut saya tidak dapat menemukan kode yang berfungsi pada saat ini.
Apa yang harus saya lakukan dengan hasil ini? Bagaimana saya bisa terus melakukan tugas yang saya butuhkan? Apakah ada referensi python dengan contoh-contoh yang menawarkan metode yang tersedia?
Saya mencoba mendaftar metode otorisasi dengan menggunakan dir () tetapi tidak dapat menemukan petunjuk bagaimana untuk melanjutkan.
Saya benar-benar ingin menghindari menggunakan fallback saya tetapi itu akan menjadi pilihan terakhir saya. Tolong bantu saya melakukannya dengan cara yang benar :)
Terima kasih dan salam
André
Edit:
Karena saya tidak membawa ini untuk bekerja dan solusi saya sebelumnya dengan memulai program saya dengan gksu tidak bekerja di / opt /, saya akhirnya harus menyerah dan menerapkan ribuan permintaan kata sandi untuk membuat program berfungsi sebagai program dasar untuk mendapatkan setidaknya T-Shirt dalam showdown aplikasi.
Saya tidak melihat masalah karena saya pertama kali berbagi dengan cepat. Di sana semuanya bekerja dengan baik. Meminta kata sandi sekali di awal. Aku benar-benar sedih sekarang. Kontribusi saya untuk AppShowdown adalah https://launchpad.net/armorforge . ;-(