Le applicazioni grafiche spesso archiviano le impostazioni e altri dati specifici dell'utente in file di configurazione scritti nella cartella principale dell'utente . Il meccanismo principale che le applicazioni usano per determinare cosa dovrebbero usare come cartella home dell'utente è la HOME variabile d'ambiente . (Puoi ispezionarlo da solo echo $HOME).
Supponiamo che tu stia eseguendo gedit(un editor di testo grafico) come root. Se esegui sudo gedit, HOMEcontinuerà a puntare verso la tua home directory, anche se il programma è in esecuzione comeroot . Di conseguenza, geditscriverà i file di configurazione comeroot nella tua home directory. Questo a volte risultare nei file di configurazione di essere posseduti daroot e quindi inaccessibili a voi (quando si esegue il programma in seguito come te stesso e non come root). Ciò accade principalmente quando l'applicazione deve creare un nuovo file di configurazione. I file appena creati, per impostazione predefinita, sono di proprietà dell'utente che li crea (che in questo caso rootnon sei tu).
Questo è il motivo principale per cui dovresti eseguire applicazioni grafiche con un sudofrontend grafico anziché con straight sudo. In Ubuntu e nella maggior parte dei suoi derivati (inclusi Xubuntu e Lubuntu), il frontend grafico standard è gksu/gksudo . In Kubuntu lo è kdesudo. (Dipende dall'ambiente desktop in uso.)
Se si desidera utilizzare sudodirettamente per eseguire un'applicazione grafica come gedit, è possibile eseguire:
sudo -H gedit
Il -Hflag viene sudoimpostato HOMEin modo che punti alla rootcartella home (che è /root).
Che comunque non gestirà automaticamente la proprietà .Xauthoritycopiandola in una cartella temporanea (questa è l'altra cosa di cui sudosi occupano i frontend grafici ). Ma nel caso raro che .Xauthoritysia inaccessibile, riceverai un errore dicendo che lo è, e quindi puoi risolvere il problema eliminandolo ( sudo rm ~/.Xauthority), poiché viene rigenerato automaticamente. Pertanto, proteggere .Xauthorityla proprietà e le autorizzazioni è meno importante della protezione della proprietà e delle autorizzazioni dei file di configurazione.
A differenza di un rootproprietario .Xauthority, quando i file di configurazione diventano di proprietà root, non è sempre così evidente quale sia il problema (perché i programmi grafici spesso vengono eseguiti, ma non funzionano molto bene e generano eventuali errori utili sulla console). Ed a volte è una seccatura più grande da risolvere, specialmente se ti trovi in una situazione in cui vuoi che uno o più file nella tua home directory siano di proprietà di qualcuno diverso da te (perché non puoi ripararlo semplicemente inserendo ricorsivamente chowntutti i tuoi file di nuovo a te stesso).
Pertanto, sudo(almeno senza -H) non dovrebbe essere utilizzato per eseguire un'applicazione grafica a meno che non si abbia una conoscenza approfondita del funzionamento interno dell'app e si sappia per certo che non tenta mai di scrivere alcun file di configurazione.