Per un utente che può eseguire comandi arbitrari con sudo
, la modifica delle variabili di ambiente non è un problema di sicurezza diretto. Se lo desideri, puoi eseguire tmp=$(mktemp); export >$tmp; sudo bash -c ". $tmp; exec bash"
- in altre parole, salvare l'ambiente e ripristinarlo all'interno della shell di root.
Come si nota, un trojan in un file di configurazione non è un problema, dal momento che il trojan potrebbe mettere un wrapper attorno a sudo
in ogni caso (e prendere la password mentre è a esso).
L'argomento è apparso più volte nelle mailing list di Ubuntu ( 1 2 ). Ubuntu non ripristina HOME
. Gli argomenti di David Mandelberg coprono la maggior parte dei casi per reimpostare HOME
.
Il ripristino di HOME
protegge dallo sfruttamento degli errori che potresti commettere. Ad esempio, uno dei file di configurazione potrebbe contenere una vulnerabilità di file temporanea che potrebbe essere sfruttata per accedere all'account root. Questo esempio è, come prima, non una preoccupazione, poiché l'exploit potrebbe influire in modo analogo sul tuo account e quindi agganciare alla tua chiamata di sudo
.
Il reset di HOME
protegge anche dagli errori che potresti commettere, ed è qui che il caso per farlo ha un punto - ma non molto convincente.
- C'è una vista estrema che dice che dovresti mantenere la configurazione di default come root. In questo modo, qualsiasi cosa fatta come root è facilmente distinguibile da cosa fare sotto il tuo account personalizzato, quindi non dimenticherai che stai agendo come root. Anche fare cose come root è doloroso, quindi è necessario usare l'account root il meno possibile. Non lo compro: fare le cose "nel modo più duro" invece del modo in cui ti senti a tuo agio, rende più probabile che commetta errori, non di meno. Normalmente è abbastanza facile sapere se stai agendo come root: se stai modificando un file sotto
/etc
, sei root¹. Se stai eseguendo una shell e il prompt termina con #
anziché $
o %
(seguendo la consueta convenzione), sei root - e puoi usare cose come i colori per rendere più visibile la distinzione. Se stai eseguendo un programma di gestione dei pacchetti, sei root.
- Puoi erroneamente lasciare un file confidenziale in una posizione leggibile pubblicamente nella tua home directory, ritenendo che sia in
/root
. Oppure potresti lasciarlo in /tmp
... Questo argomento mi sembra davvero inverosimile. Certo, è un errore che potresti commettere, ma non è più probabile che, ad esempio, aggiunga erroneamente una regola del firewall che lascia tutto aperto o che rende /bin/*
scrivibile in tutto il mondo.
- Uno dei tuoi file di configurazione potrebbe far apparire le informazioni riservate nella tua home directory. Questo è plausibile - potrebbe essere un file di cronologia o un file di salvataggio automatico - ma questi file dovrebbero essere presumibilmente in una posizione privata comunque, altrimenti le persone potrebbero curiosare su di te.
- Le applicazioni che salvano automaticamente la loro configurazione potrebbero scrivere nella tua home directory. Questo non è tanto un problema di sicurezza come una questione di convenienza per te, ed è più che compensato dalla comodità di avere la tua configurazione abituale quando agisci da root.
- Potresti erroneamente modificare i file sotto
~
, pensando che questa sia la home directory di root quando è effettivamente la tua home directory. Sì, ma se $HOME
è la tua home directory, avrai anche la tua configurazione abituale, quindi è meno probabile che tu stia funzionando come utente root e più probabile che pensi di essere in esecuzione una modalità privilegiata. Questo argomento è sollevato dal proprio petardo.
Scott James Remnant ha detto così:
"sudo -s" is for lazy people who don't want to duplicate config files, "sudo -i" is for forgetful people.
Ma sudo -i
(esegui una shell di root) sembra una cattiva idea per le persone dimentiche. E duplicare i file di configurazione come root è possibile solo su un computer con un solo utente, nel qual caso il primo come root non è un grosso problema.
Conclusione: no, non ci sono gravi problemi di sicurezza, e il caso di reimpostare HOME
è piuttosto debole. Lo scopo di always_set_home
è proteggerti contro te stesso, ma protegge così poco che non ne vale la pena.
¹ Tranne che non dovresti eseguire un editor come root: usa sudoedit
o Emacs (Tramp) per il metodo sudo
per eseguire l'editor come utente normale.