gksudo
è un frontend basato su GTK di sudo
(A proposito, kdesudo
è un frontend basato su Qt), tuttavia (per impostazione predefinita) gestisce più variabili ambientali (HOME
, XAUTHORITY
, ecc.) rispetto a sudo
rendendo così l'esecuzione dei comandi come root più sicura.
Per quanto posso vedere, solo la risposta di @Logics è sufficientemente corretta (@Ignacio Vazquez-Abrams non è completa). Ecco il tentativo di evitare chiarimenti a @Davros @knitti risposta/commenti (Si prega gentilmente di rimuoverli/modificarli quando non è necessario):
- Sebbene entrambi i comandi rappresentino davvero
sudo
, l'interfaccia utente utilizzata NON è l'unica differenza tra i due comandi. - L'esecuzione del programma GUI NON è l'unica situazione in cui dovresti usare gk/kdesudo, invece dovresti usare gk/kdesudo ogni volta che non puoi determinare se il comando creerà/scriverà file nella tua home directory (che il
HOME
variabile d'ambiente punta nelsudo
comando in alcuni sistemi e situazioni). Non tutte le app GUI scrivono nella tua home directory e non tutte le app CLI , quindi il tipo di comando non è il punto chiave. - Puoi ancora usa
sudo
comando per avviare le app della GUI come root (per visualizzare l'output della console delle app come esempio), tuttavia è necessario gestireHOME
(e altri comeXAUTHORITY
,DISPLAY
, input-method-related-stuff, ecc.) correttamente le variabili ambientali in modo che l'app avviata non fallisca, perda funzionalità o faccia cose davvero brutte. Quella che segue è la mia attuale raccomandazione per l'utilizzo disudo
sudo -H <rest of the command>
- (da
sudo
sezione 8 pagina di manuale) Il-H ( HOME )
L'opzione richiede che la politica di sicurezza impostiHOME
variabile di ambiente nella home directory dell'utente di destinazione (root per impostazione predefinita) come specificato dal database delle password. A seconda della politica, questo potrebbe essere il comportamento predefinito. - Questo dovrebbe almeno impedire la creazione di file in
sudo
directory home del chiamante
- (da
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
- Questo dovrebbe consentire a
di essere eseguito in un terminale TTY e visualizzato nel tuo ambiente desktop
- Questo dovrebbe consentire a
- Il comportamento del
sudo
comando non è identico su tutti i sistemi e può essere configurato tramitevisudo
comando, controllasudoers(5)
manpage per maggiori informazioni.
sudo
chiede la password sulla riga di comando e gksudo
apre una finestra di dialogo per esso.
L'uso regolare di sudo per eseguire programmi grafici in rare occasioni comprometterà le autorizzazioni su alcuni file. Per sicurezza gksudo (o kdesudo a seconda dei casi) dovrebbe essere usato per eseguire programmi con una GUI. Penso che questo sia davvero un bug, anche se ho sentito spiegazioni secondo cui gksudo comprende le variabili del server X e sudo non potrebbe causare problemi. Proprio come un suggerimento; se stai eseguendo programmi grafici come root, invece di aprire un terminale per ogni programma che desideri eseguire, digita ALT-F2 (alt e tasto funzione 2 contemporaneamente), quindi digita nella finestra di dialogo che si apre "gksudo program" senza le virgolette e il programma sostituito dall'applicazione che vuoi eseguire.