Risposte:
Possono fornire funzionalmente vicino alla stessa cosa, ma sembra che "sudo -i" sia più leggero e mantenga alcuni utili riferimenti nel tuo ambiente.
Puoi vedere i processi extra guardando 'ps auxf' (f ti dà una vista foresta)
sudo -i produce questo albero di processo
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4675 0.6 0.0 19512 2260 pts/0 S+ 23:42 0:00 | \_ -bash
sudo su - restituisce questo albero di processo
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4687 0.5 0.0 43256 1488 pts/0 S 23:42 0:00 | \_ su -
root 4688 0.5 0.0 19508 2252 pts/0 S+ 23:42 0:00 | \_ -su
Si noti che stanno iniziando dallo stesso processo pid bash, 4482, ma che su - sembra generare un altro passo.)
Il tuo primo "sudo" sta già elevando il tuo livello di accesso alla radice. L'esecuzione di su senza specificare un nome utente all'interno di sudo modifica l'utente corrente in root due volte.
Un altro modo per investigare questo è eseguendo entrambi i comandi con strace -f.
strace -f -o sudoi sudo -i
vs
strace -f -o sudosu sudo su -
Se si diffondono queste due strisce, vedrai più exeve in esecuzione per sudo su -.
Un'altra cosa.
sudo -i mantiene le variabili di ambiente extra impostate da SUDO.
SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000
sudo su - blocca queste variabili.
Risposta del colpo: No, non sono gli stessi.
Risposta lunga: sudo e su - sono programmi diversi che svolgono lo stesso compito, che ti porta ai privilegi di root.
su era il modo di fatto di diventare root sui sistemi Linux. Tuttavia, c'era sempre la necessità di separare i privilegi e lasciare indietro alcune informazioni di controllo. Anche quando fai su - tutto ciò che fai viene fatto come root ed è pericoloso avere così tanto potere. Qui è dove sudo è venuto in soccorso.
sudo ha alcune caratteristiche che su non ha. L'elemento chiave in sudo è la capacità di eseguire il comando "one" come root e quindi rilasciare i privilegi all'utente normale. Esempio: rimozione di un file di proprietà di root.
sudo rm /root/someFile
Questo comando cancellerà il file perché sudo ti eleverà alla radice ogni volta che usi il comando sudo prima di un altro comando. Il comando successivo che hai eseguito verrà eseguito come un normale utente (a meno che non si aggiunga il comando sudo all'inizio). Ciò consente di eseguire attività amministrative e quindi rilasciare immediatamente i privilegi per evitare condizioni pericolose.
sudo offre anche altri vantaggi come la limitazione del set di programmi che un utente può eseguire, i comandi di log eseguiti su sudo e altre cose. Per maggiori informazioni sudo in breve
Quando fai su - o sudo -i fai la stessa cosa. Questo sta diventando root, ma tieni presente che su e sudo sono completamente diversi e ti offrono diversi strumenti come amministratore di sistema. Personalmente non eseguo MAI su - e la mia politica pam lo proibisce , non permettendo a nessuno di eseguirlo. Nei miei sistemi devi sempre usare la causa sudo dei vantaggi aggiunti.
Ulteriori informazioni: utilizzo e abilitazione di sudo
su
può anche eseguire un solo comando:su -c 'command ...'
sudo -i
e sudo su -
, non tra sudo
e su
.
sudo su -
inutile?