Saya memiliki aplikasi GUI yang perlu memanggil daemon (ditulis dengan Python) dengan hak pengguna super. Saya ingin melakukan ini tanpa meminta kata sandi dari pengguna.
Karena daemon adalah skrip, saya tidak dapat mengatur bit SUID secara langsung. Saya dapat menulis pembungkus C untuk ini, tetapi saya lebih suka tidak menemukan kembali roda, terutama ketika kesalahan di pihak saya dapat menyebabkan keamanan sistem sangat terganggu.
Apa yang biasanya saya lakukan dalam situasi ini adalah menambahkan baris di /etc/sudoers
yang memungkinkan pengguna untuk mengeksekusi daemon sebagai root tanpa kata sandi, menggunakan direktif NOPASSWD. Ini berfungsi dengan baik dari baris perintah. Namun, ketika saya melakukan ini dari GUI, sebuah pkexec
dialog muncul menanyakan kata sandi pengguna. Tampaknya di Ubuntu, panggilan ke sudo
dari GUI entah bagaimana dicegat oleh pkexec
.
Apakah ada cara yang bersih untuk mengatasi ini? Saya lebih suka tidak harus berurusan dengan kerumitan skrip setuid.
Jawaban Terbaik
Tidak tepat untuk mengatakan bahwa:“Sepertinya di Ubuntu, panggilan ke sudo
dari GUI entah bagaimana dicegat oleh pkexec
“ . pkexec
tidak memiliki banyak kesamaan dengan sudo
. Berbeda dengan sudo
, pkexec
tidak memberikan izin root ke seluruh proses, melainkan memungkinkan tingkat kontrol kebijakan sistem terpusat yang lebih baik.
Sekarang, jika Anda ingin menjalankan aplikasi GUI tanpa diminta kata sandi oleh pkexec
, ini tidak sulit untuk dilakukan. Mari kita ambil contoh GParted . Ketika Anda membukanya, Anda akan melihat jendela dialog berikut meminta Anda dengan kata sandi:
Klik Detail dan jendela dialog akan terlihat sekarang seperti:
Dari sini yang harus Anda lakukan adalah membuka /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
file menggunakan misalnya perintah berikut:
gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
dan ubah baris berikut:
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
dengan sebagai berikut:
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
Simpan file dan tutup. Selanjutnya, ketika Anda akan membuka GParted Anda tidak akan dimintai kata sandi lagi.
Terkait:Apakah mungkin dengan Gedit atau baris perintah untuk memodifikasi setiap baris keempat dari file teks?