Esiste un gksudo neutro per desktop?


17

Esistono vari strumenti per vari desktop che mirano a eseguire un'applicazione grafica come root. gksudo, kdesudo, empower, Ecc ...

Ma cosa succede se sto scrivendo uno script che potrebbe essere utilizzato su qualsiasi desktop Linux? C'è un xdg-sudoqualche tipo ..? Uno standard per ottenere l'accesso sudo in un ambiente desktop?

Risposte:


16

Seguendo il suggerimento di @Tachyons, ho studiato MOLTO pkexeced è fantastico !

  • Fa parte di PolicyKit , un pacchetto ampiamente utilizzato.
  • Ospitato e sponsorizzato da freedesktop.org
  • Predefinito in Gnome , Unity , MATE , Cinnamon , KDE , LXDE e XFCE e possibilmente altri
  • Funziona tramite D-Bus, quindi è completamente desktop-neutral, con un protocollo ben definito.
  • In molti DE viene utilizzato in numerosi servizi come la schermata di accesso, l'arresto / riavvio, la gestione del disco (udisks / automount) e così via.

Quindi sì, soddisfa tutti i requisiti e immagino che sia la cosa più simile a un "gksudo universale" .

Detto questo, pkexecè il front-end della riga di comando di PolicyKit. Esistono 2 modalità operative di base:

  • Eseguilo semplicemente come faresti sudoe otterrai un bel prompt della GUI:

    $ pkexec rm -rf /

prompt della GUI di pkexec

  • Oppure crea un file di autorizzazione PolicyKit per la tua applicazione, inseriscilo /usr/share/polkit-1/rules.de consentirà una grande quantità di opzioni di personalizzazione e sicurezza, ad esempio l'accesso alla radice solo per determinate azioni, nessuna necessità di password per altre, accesso limitato a determinati percorsi , ecc. È possibile ottimizzare le impostazioni con una granularità sorprendente.

6

Un modo più generale sarebbe quello di scrivere un "programma di aiuto". Tale programma richiederebbe all'utente una password; se sei sicuro che, per esempio, Zenity sia installato, puoi usarlo, altrimenti dovrai scrivere il programma di supporto in Python o qualcos'altro che possa interagire con la GUI.

Leggi il sudomanuale per le -Aopzioni ("askpass") e -S(stdin).

E ricorda che quando esegui sudodal tuo script, hai bisogno -Hdell'opzione (home) per simulare gksudo.

Questo metodo funziona bene, ma è necessario testare accuratamente il programma di supporto per assicurarsi che sia privo di bug.


1
Devi anche gestire il passaggio di token xauth nel tuo programma, il che non è banale.
symcbean,

4

No, non esiste un modo standard per ottenere i privilegi di root (o di qualsiasi altro utente).

Se vuoi essere compatibile con il maggior numero di sistemi possibile, non dare per scontato ma dì all'utente che deve eseguire lo script come utente specifico. Quindi spetta all'utente / amministratore configurare il sistema in modo che lo script venga eseguito in modo corretto.

Sarebbe bello dare qualche suggerimento su come utilizzare i sistemi di autenticazione più comuni, come su, sudo e ConsoleKit.


È vero per l'inizio del 2009, ma per fortuna ora polkit(formalmente PolicyKit) è abbastanza diffuso da essere considerato uno standard.
MestreLion,
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.