Grafiksel uygulamalar için pkexec neden gksudo'ya tercih edilir?


10

Lütfen bunu reddeden Ubuntu belgelerini sağlayın: https://help.ubuntu.com/community/RootSudo Tamamen güncellenmiş 13.04 sistemimde pkexec neden çalışmıyor?

$ 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


pkexec, gksu'nun yerine bir damla değil. Manuel olarak çalıştırmanız amaçlanmamıştır.
psusi

2
Ben ne sormak ne de gksu bahsetmedi.
chili555

pkexecYapılandırmadan GUI çalıştırma hakkında çok iyi bir cevap : askubuntu.com/a/332847/89385
akostadinov

Policykit-1-gnome programını yükleyin. Ayrıntılar ve açıklama için buraya bakın .
user303371

Yanıtlar:


7

Neden çalışmıyor?

Varsayılan olarak pkexecgrafik (X11) uygulamalarını çalıştırmanıza izin vermez. Man sayfasından:

 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.

Man sayfasında belirtildiği gibi, bunun bir şekilde tehlikeli veya önerilen olup olmadığını gerçekten bilmememe rağmen çalışmasını sağlayabilirsiniz .

Örneğin gedit'i etkinleştirmek için /usr/share/polkit-1/actions/com.ubuntu.gedit.policyaşağıdaki içerikle oluşturabilirsiniz :

<?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>

O zaman pkexec geditbeklendiği gibi çalışmalıdır:

resim açıklamasını buraya girin

Tahmin edebileceğiniz gibi, bu sadece geditiş yapacak . Teoride, allow_gui"org.freedesktop.policykit.exec" dosyasına (varsayılan eylem) eklediyseniz, bu tüm uygulamalar için çalışmalıdır, ancak testlerimde sizinkiyle aynı sonucu aldım.

Neden pkexec tercih edilir?

Burada güçlü yönleri hakkında bir tartışma bulabilirsiniz pkexec.


3
Peki, grafik uygulamalar için gksudo tercih edilir ve pkexec DEĞİLDİR?
chili555

1
Sanırım öyle. Varsa gksudo, kullanmanız gereken her uygulama için tek eylemler oluşturmak yerine bunu kullanmak çok daha kolaydır (bunu yapmak için "global" bir yol yoksa).
Salem

1
@ Salem- O zaman cevabımın grafiksel uygulamalar için kullanılması amaçlanmadığında ve okuyabildiğiniz gibi işe yaramadığında pkexec'i kullanmak için neden düzenlendiğini ve onaylandığını merak ediyorum. askubuntu.com/questions/313619/… Anlamadığım bir şey olmalı.
chili555

@ chili555 Sorunuzu motive eden şey buysa, Meta'da bunu sormalısınız. 13.04'te yüklemeniz gksudoveya yapılandırmanız gerekir pkexec(ayrıca kullanabilirsiniz, sudo -iancak Alt + F2 olarak da adlandırılır "Çalıştır"). İlk ÇOK daha kolay buldum. Eğer biri başka türlü iyi düşünüyorsa ... Bana göre, amaçlandığı gibi çalışmayacak bir şey önermek yanlış görünüyor, ama bir şeyleri kaçırıyor olabilirim ...
Salem

1
pkexecaslında olabilir yapılandırma olmadan GUI çalıştırın: askubuntu.com/a/332847/89385
akostadinov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.