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
, HOME
continuerà a puntare verso la tua home directory, anche se il programma è in esecuzione comeroot
. Di conseguenza, gedit
scriverà 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 root
non sei tu).
Questo è il motivo principale per cui dovresti eseguire applicazioni grafiche con un sudo
frontend 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 sudo
direttamente per eseguire un'applicazione grafica come gedit
, è possibile eseguire:
sudo -H gedit
Il -H
flag viene sudo
impostato HOME
in modo che punti alla root
cartella home (che è /root
).
Che comunque non gestirà automaticamente la proprietà .Xauthority
copiandola in una cartella temporanea (questa è l'altra cosa di cui sudo
si occupano i frontend grafici ). Ma nel caso raro che .Xauthority
sia inaccessibile, riceverai un errore dicendo che lo è, e quindi puoi risolvere il problema eliminandolo ( sudo rm ~/.Xauthority
), poiché viene rigenerato automaticamente. Pertanto, proteggere .Xauthority
la proprietà e le autorizzazioni è meno importante della protezione della proprietà e delle autorizzazioni dei file di configurazione.
A differenza di un root
proprietario .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 chown
tutti 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.