Saya menulis program gui menggunakan modul wx dengan python. Dalam program kapan pun saya mengakses folder yang memerlukan hak akses root maka ia meminta kata sandi di terminal tetapi saya ingin menampilkan dialog kepada pengguna untuk memasukkan kata sandi dan mengautentikasi dia. Bagaimana cara memanggil dialog itu dan mengautentikasi pengguna di ubuntu?
13
sudo
, tetapi saya tidak memiliki cukup pengetahuan tentang Python atau PolicyKit untuk menulis jawaban yang baik menjelaskan caranya. Mungkin orang lain bisa.Jawaban:
Ada dua Q & As yang berbeda di stackoverflow menjawab pertanyaan Anda: di sini dan di sini .
Kedua jawaban menggunakan perintah
gksudo
(sudah disebutkan oleh @khamer). Jika Anda menjalankangksudo command
(juga tanpa python) pada dasarnya akan melakukan apa yangsudo
dilakukan, tetapi dengan antarmuka grafis - yaitu meminta kata sandi pengguna dan kemudian menjalankan perintah sebagai root jika pengguna berada dalam file sudoers.Untuk mengimplementasikan solusi yang disarankan dari jawaban yang ditautkan dalam python, Anda dapat menggunakan sesuatu seperti yang ditunjukkan oleh contoh berikut:
Buat file
run.py
:Dan sebuah file
create.py
:Kemudian jalankan
python run.py
dan setelah Anda memasukkan kata sandi Anda, sebuah file yang dimiliki oleh root akan dibuat. Jika Anda menjalankannya,python create.py
itu akan menjadi milik Anda (file tersebut seharusnya tidak ada sebelum menjalankan skrip).sumber
Meskipun saya yakin ada solusi python yang lebih bagus, versi turun dan kotor adalah menggunakan gksudo. gksudo melakukan hal yang sama dengan yang dilakukan sudo, kecuali itu menciptakan dialog untuk otentikasi yang Anda sebutkan alih-alih bertanya pada baris perintah.
Lihat https://help.ubuntu.com/community/RootSudo#Graphical_sudo
sumber
gksu
/gksudo
dalam program Python?Masukkan skrip ini dalam kode Anda:
sumber