Bagaimana cara mengonfigurasi pkexec
untuk menghindari kesalahan saat menjalankan aplikasi GUI?
Saya menemukan dua cara yang mungkin:
Seperti yang Anda lihat, gunakan yang berikut:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
tidak akan membuat Anda kesalahan. Dan ini normal karena man pkexec
sangat jelas dalam hal ini:
[...] pkexec will not allow you to run X11 applications
as another user since the $DISPLAY and $XAUTHORITY environment
variables are not set.[...]
Sebagai hasilnya, Anda dapat membuat alias ( permanen ) (ini adalah cara paling sederhana):
alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
Atau, (lagi) seperti yang man pkexec
dikatakan:
[...] These two variables will be retained if the
org.freedesktop.policykit.exec.allow_gui annotation on an action is set
to a nonempty value; this is discouraged, though, and should only be
used for legacy programs.[...]
Anda dapat membuat file kebijakan baru dengan /usr/share/polkit-1/actions
nama com.ubuntu.pkexec.gedit.policy
dengan kode xml berikut di dalam mana hal yang paling penting adalah untuk menetapkan org.freedesktop.policykit.exec.allow_gui
nilai kosong:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<action id="com.ubuntu.pkexec.gedit">
<message gettext-domain="gparted">Authentication is required to run gedit</message>
<icon_name>gedit</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>
Bagaimana cara mengatakannya untuk tidak meminta kata sandi setelah pertama kali menerapkannya pada perintah?
Selama tiga tag pengaturan ini: allow_any
, allow_inactive
dan allow_active
dari file kebijakan, tersedia pilihan berikut:
- tidak : Pengguna tidak diizinkan untuk melakukan tindakan. Karena itu tidak perlu untuk otentikasi.
- ya : Pengguna diizinkan untuk melakukan tindakan tanpa otentikasi apa pun.
- auth_self : Otentikasi diperlukan tetapi pengguna tidak perlu menjadi pengguna administratif.
- auth_admin : Otentikasi sebagai pengguna administratif diperlukan.
- auth_self_keep : Sama seperti auth_self tetapi, seperti
sudo
, otorisasi berlangsung beberapa menit.
- auth_admin_keep : Sama dengan auth_admin tetapi, seperti
sudo
, otorisasi berlangsung beberapa menit.
Sumber: Polkit - Struktur - Tindakan
Jadi, jika Anda menggunakan opsi auth_admin_keep (atau, sebagaimana berlaku, auth_self_keep ), pkexec
tidak akan meminta kata sandi lagi untuk beberapa waktu (secara default waktu ini diatur ke 5 menit saat saya memeriksa). Kerugiannya di sini adalah bahwa hal ini hanya berlaku untuk satu - perintah / aplikasi yang sama dan berlaku untuk semua pengguna (kecuali jika ditolak di konfigurasi selanjutnya).
Di mana menyimpan file konfigurasi jika belum ada?
File konfigurasi atau definisi polkit dapat dibagi menjadi dua jenis:
Tindakan didefinisikan dalam file XML .policy yang terletak di /usr/share/polkit-1/actions
. Setiap tindakan memiliki seperangkat izin default yang melekat padanya (mis. Anda perlu mengidentifikasi sebagai administrator untuk menggunakan tindakan GParted). Default dapat ditolak tetapi mengedit file tindakan BUKAN dengan cara yang benar. Nama file kebijakan ini harus memiliki format ini:
com.ubuntu.pkexec.app_name.policy
Aturan otorisasi didefinisikan dalam file JavaScript .rules. Mereka ditemukan di dua tempat: paket pihak ke-3 dapat digunakan /usr/share/polkit-1/rules.d
(meskipun sedikit jika ada) dan /etc/polkit-1/rules.d
untuk konfigurasi lokal. File .rules menunjuk subset pengguna, merujuk ke satu (atau lebih) tindakan yang ditentukan dalam file tindakan dan menentukan dengan batasan apa tindakan ini dapat diambil oleh pengguna tersebut. Sebagai contoh, file aturan dapat mengesampingkan persyaratan default untuk semua pengguna untuk mengotentikasi sebagai admin saat menggunakan GParted, menentukan bahwa beberapa pengguna tertentu tidak perlu melakukannya. Atau tidak diizinkan menggunakan GParted sama sekali.
Sumber: Polkit - Struktur
Apakah ada aplikasi GUI untuk mengkonfigurasi pkexec
penggunaan?
Dari yang saya tahu, sampai sekarang (18.01.2014) tidak ada yang seperti ini. Jika di masa depan saya akan menemukan sesuatu, saya tidak akan lupa untuk memperbarui jawaban ini juga.