Kenapa itu tidak berhasil?
Secara default pkexectidak memungkinkan Anda untuk menjalankan aplikasi grafis (X11). Dari halaman manual:
The environment that PROGRAM will run it, will be set to a minimal
known and safe environment in order to avoid injecting code through
LD_LIBRARY_PATH or similar mechanisms. In addition the PKEXEC_UID
environment variable is set to the user id of the process invoking
pkexec.
As a result, pkexec will not allow you to run X11 applications
as another user since the $DISPLAY and $XAUTHORITY environment
variables are not set.
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.
Seperti yang dinyatakan di halaman manual, Anda dapat membuatnya bekerja walaupun saya benar-benar tidak tahu apakah ini berbahaya atau direkomendasikan .
Untuk mengaktifkan gedit misalnya, Anda dapat membuat /usr/share/polkit-1/actions/com.ubuntu.gedit.policydengan konten berikut:
<?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.0/policyconfig.dtd">
<policyconfig>
<vendor>gedit</vendor>
<vendor_url>gedit</vendor_url>
<icon_name>accessories-text-editor</icon_name>
<action id="org.freedesktop.policykit.pkexec.gedit">
<description>Run "gedit"</description>
<message>Authentication is required to run Text Editor</message>
<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>
Maka pkexec geditharus bekerja seperti yang diharapkan:

Seperti yang bisa Anda tebak, ini hanya akan geditberhasil. Secara teori, jika Anda menambahkan allow_gui"org.freedesktop.policykit.exec" (tindakan default) ini harus bekerja untuk semua aplikasi, tetapi dalam pengujian saya, saya mendapatkan hasil yang sama seperti milik Anda.
Mengapa pkexec lebih disukai?
Di sini Anda dapat menemukan diskusi tentang kekuatan pkexec.