Perché uno è preferito rispetto all'altro in questo esempio?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Si prega di fornire collegamenti alla documentazione di Ubuntu.
Perché uno è preferito rispetto all'altro in questo esempio?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Si prega di fornire collegamenti alla documentazione di Ubuntu.
Risposte:
Il sudo su
comando sta per "cambia utente" e ti consente di diventare un altro utente. Consente a un utente autorizzato di eseguire un comando come superutente o un altro utente, come specificato nel file sudoers.
L'opzione ‑i (simula il login iniziale) esegue la shell specificata dalla voce del database delle password dell'utente di destinazione come shell di login. Ciò significa che i file di risorse specifici per l'accesso come .profile o .login verranno letti dalla shell. Se viene specificato un comando, viene passato alla shell per l'esecuzione tramite l'opzione -c della shell. Se non viene specificato alcun comando, viene eseguita una shell interattiva.
Fonte: ManPage
sudo su
ti viene chiesta la password, non la password di root. L'utente root non deve nemmeno avere una password. Indipendentemente da ciò, se un amministratore utilizza la password di root, ciò non implica che tutti gli utenti normali lo sappiano.
sudo
viene eseguito su
come root e root può essere eseguito da su
qualsiasi utente senza conoscere la propria password. I fraintendimenti fondamentali su come funziona il sistema meritano una valutazione negativa dell'IMO.
sudo -i
non chiederà neanche la password di root, quindi non è rilevante per la domanda.
sudo su
cambia solo l'utente corrente in root. Le impostazioni dell'ambiente (come PATH) rimangono le stesse.
sudo -i
crea un nuovo ambiente come se root avesse appena effettuato l'accesso.
La differenza è più evidente se si utilizzano altri utenti. Dopo sudo su bob
sarai bob, ma nello stesso posto. Dopo sudo -i -u bob
che sarai bob, nella home directory di bob, con la shell predefinita di bob e con bob .profile
e tutti gli altri script di login che sono stati eseguiti.
Vedi man sudo
per maggiori dettagli su cosa -i
fa. Sfortunatamente, i man su
dettagli sono chiari.
Trovato una versione di man su
(da login-1: 4.1.4.2 + svn3283-3ubuntu5.1) che ha il seguente da dire:
$ PATH ripristinato secondo le opzioni /etc/login.defs ENV_PATH o ENV_SUPATH (vedi sotto);
$ IFS reimpostato su "<spazio> <tab> <nuova>", se impostato.
Si noti che il comportamento predefinito per l'ambiente è il seguente:
Le variabili di ambiente $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH e $ IFS vengono ripristinate.
Se --login non viene utilizzato, l'ambiente viene copiato, ad eccezione delle variabili sopra.
Se si utilizza --login, le variabili di ambiente $ TERM, $ COLORTERM, $ DISPLAY e $ XAUTHORITY vengono copiate se impostate.
Altri ambienti potrebbero essere impostati da moduli PAM.
Quindi, se e fino a che punto sudo su
l'ambiente cambia dipende dalla tua distribuzione e configurazione. Quindi sudo -i
è teoricamente più portatile.
su
fa impostazioni di ambiente cambiamento, e può essere utilizzato per simulare un login utilizzando -
o -l
. Anche senza -l
, $PATH
è cambiato. Prova queste affermazioni prima di farle! (Intendevi che PWD
rimane lo stesso?)
sudo su -
e sudo -i
?
$PATH
è cambiato quando lo uso su
senza sudo
(usando la password di root). Secondo info su
(che potrebbe essere una cosa migliore da collegare nella tua risposta), su
leggi davvero la voce della password per l'utente che stai diventando. Forse il $PATH
cambiamento che sto osservando dipende dal sistema (sono su Debian 7).
man su
(che è più lungo di quello a cui ti sei collegato) dice che fa parte di shadow-utils 4.1.5.1
. La mia man
pagina dice anche che $PATH
è impostato anche se --preserve-environment
viene utilizzato. Quindi immagino che sia davvero solo una differenza tra le diverse versioni di su
.
/etc/pam.d/sudo
e /etc/pam.d/su
può essere impostato per fare cose completamente diverse o esattamente le stesse.
Il problema principale è una delle (non così) impostazioni dell'ambiente sano.
L'uso sudo su
della nuova shell ottiene il suo ambiente dall'utente che emette il comando, il che può essere problematico.
Con sudo -i
te ottieni una shell root pulita.
Vedi Note speciali su sudo e shell
Resta da osservare che raramente è assolutamente necessario creare una shell di root.
sudo -i
è simile sudo su -
, che in realtà non ottiene il suo ambiente dall'utente che emette il comando.
sudo su
contro sudo -i
.