Mengapa pkexec lebih disukai daripada gksudo untuk aplikasi grafis?

10

Harap berikan dokumentasi Ubuntu yang membantah ini: https://help.ubuntu.com/community/RootSudo Mengapa, pada sistem 13.04 saya yang sepenuhnya diperbarui, apakah pkexec tidak berfungsi?

$ pkexec gedit somefile.txt
No protocol specified

** (gedit:13135): WARNING **: Could not open X display
Cannot open display: 
Run '/usr/bin/gedit --help' to see a full list of available command line options
cabai555
sumber
pkexec bukanlah pengganti pengganti gksu. Ini tidak dimaksudkan untuk Anda jalankan secara manual seperti itu.
psusi
2
Saya tidak bertanya tentang atau menyebutkan gksu.
chili555
Jawaban yang sangat bagus tentang pkexecmenjalankan GUI tanpa mengonfigurasi: askubuntu.com/a/332847/89385
akostadinov
Instal policykit-1-gnome. Lihat di sini untuk detail dan penjelasan.
user303371

Jawaban:

7

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:

masukkan deskripsi gambar di sini

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.

Salem
sumber
3
Jadi, untuk aplikasi grafis, apakah gksudo lebih disukai dan BUKAN pkexec?
chili555
1
Saya rasa begitu. Jika gksudotersedia, jauh lebih mudah untuk menggunakannya daripada membuat tindakan tunggal untuk setiap aplikasi yang perlu Anda gunakan (jika tidak ada cara "global" untuk melakukannya).
Salem
1
@ Salem- Lalu saya bertanya-tanya mengapa jawaban saya diedit dan disetujui untuk menggunakan pkexec ketika itu tidak dimaksudkan untuk digunakan untuk aplikasi grafis dan, seperti yang Anda baca, tidak berfungsi. askubuntu.com/questions/313619/... Pasti ada sesuatu yang tidak saya mengerti.
chili555
@ chili555 Jika hasil edit itu yang memotivasi pertanyaan Anda, Anda harus menanyakan ini di Meta. Di 13.04 Anda harus menginstal gksudoatau mengkonfigurasi pkexec(Anda juga dapat menggunakan sudo -itetapi itu tidak akan bekerja dengan Alt + F2 alias "Jalankan"). Saya menemukan JAUH pertama lebih mudah. Jika ada yang berpikir sebaliknya ... Bagi saya tampaknya salah untuk menyarankan sesuatu yang tidak akan berfungsi sebagaimana dimaksud, tetapi saya mungkin kehilangan sesuatu ...
Salem
1
pkexecsebenarnya dapat menjalankan GUI tanpa konfigurasi: askubuntu.com/a/332847/89385
akostadinov