Perché pkexec è preferito rispetto a gksudo per applicazioni grafiche?


10

Fornisci la documentazione di Ubuntu che rifiuta questo: https://help.ubuntu.com/community/RootSudo Perché, sul mio sistema 13.04 completamente aggiornato, pkexec non funziona?

$ 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 non è un calo in sostituzione di gksu. Non è previsto per te eseguire manualmente in questo modo.
psusi,

2
Non ho chiesto né menzionato gksu.
chili555

Un'ottima risposta su come pkexeceseguire la GUI senza configurazione: askubuntu.com/a/332847/89385
akostadinov

Installa policykit-1-gnome. Vedi qui per dettagli e spiegazioni.
user303371

Risposte:


7

Perché non funziona?

Per impostazione predefinita pkexec, non consente di eseguire applicazioni grafiche (X11). Dalla pagina man:

 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.

Come affermato nella pagina man, puoi farlo funzionare anche se non so davvero se questo sia in qualche modo pericoloso o raccomandato .

Per abilitare gedit, ad esempio, puoi creare /usr/share/polkit-1/actions/com.ubuntu.gedit.policycon il seguente contenuto:

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

Quindi pkexec geditdovrebbe funzionare come previsto:

inserisci qui la descrizione dell'immagine

Come puoi immaginare, questo funzionerà solo gedit. In teoria, se hai aggiunto allow_guia "org.freedesktop.policykit.exec" (l'azione predefinita) questo dovrebbe funzionare per tutte le applicazioni, ma nei miei test ho ottenuto lo stesso risultato del tuo.

Perché è preferito pkexec?

Qui puoi trovare una discussione sui punti di forza di pkexec.


3
Quindi, per le applicazioni grafiche, gksudo è preferito e NON pkexec?
chili555

1
Credo di si. Se gksudoè disponibile, è molto più semplice usarlo invece di creare singole azioni per ogni app che devi usare (se non esiste un modo "globale" per farlo).
Salem,

1
@ Salem- Quindi mi chiedo perché la mia risposta sia stata modificata e approvata per l'uso di pkexec quando non è destinata all'uso per applicazioni grafiche e, come puoi leggere, non ha funzionato. askubuntu.com/questions/313619/… Deve esserci qualcosa che non capisco.
chili555

@ chili555 Se quella modifica è stata la motivazione della tua domanda, dovresti chiederla a Meta. In 13.04 devi installare gksudoo configurare pkexec(puoi anche usare sudo -ima questo non funzionerà con Alt + F2 aka "Esegui"). Trovo il primo MOLTO più semplice. Se qualcuno la pensa diversamente ... A me sembra sbagliato suggerire qualcosa che non funzionerà come previsto, ma potrei mancare qualcosa ...
Salem,

1
pkexecattualmente può eseguire la GUI senza configurazione: askubuntu.com/a/332847/89385
akostadinov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.