Perché sudo -s è meglio di sudo su?


28

Ho visto molti commenti qui in Chiedi a Ubuntu riguardo alle preferenze nell'uso sudo -spiuttosto che sudo su.

Per me, quei due comandi fanno esattamente lo stesso. Ma perché sudo -sdovrebbe essere migliore?


1
Penso sudo -io sudo suè meglio che sudo -sper i motivi menzionati qui: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Inoltre: questo è un possibile duplicato di superuser.com/questions/29/…
organizzare il

Penso che questa domanda dovrebbe essere spostata su unix.stackexchange.com
igi

Risposte:


26

Penso che sudo -snon sia "migliore", è solo diverso.

sudo -s

mantiene la tua directory $ HOME, quindi quando avvii i programmi, useranno i tuoi file di configurazione (e non quelli di root) ecc. Svantaggio: possono anche cambiare la proprietà dei tuoi file nella directory $ HOME, tipico esempio è il .Xauthorityfile, ma io non ho mai avuto problemi con questo.

sudo su o sudo -i

i programmi useranno la home directory del root e i suoi file di configurazione. Questo potrebbe essere più intuitivo, ma significa anche che non utilizzerà alcuna configurazione che potresti aver impostato (alias, cronologia di bash, ...).


1
Bene, ora capisco la differenza. Grazie!
fitojb,

1
"sudo su" non equivale a "sudo -i". "sudo -i" equivale a "sudo su -" ma "sudo su -" mantiene la directory di lavoro corrente mentre "sudo -i" ti sposta nella home di root
Gregory Pakosz,

13

Perché sudo -snon cambierà le variabili di ambiente, in particolare $HOME, che rimarrà HOME=/home/USER. Se lo usi sudo su, cambierà in HOME=/rootquale può avere effetti collaterali negativi quando programmi che avvii, prova ad accedere alla home directory del tuo utente.

Quindi in pratica è come sudovs gksudoquando si eseguono programmi grafici.


5

A parte le differenze già menzionate con le variabili di ambiente, trovo sudo susciocco e dispendioso perché stai chiedendo sudodi eseguire sucome root e gli chiedo di eseguire una shell come root. Perché chiedere a un programma di chiedere a un programma di darti una shell di root, quando puoi avere solo il primo programma che ti dà quella shell? Importa in qualche senso pratico? No, sono solo pedante.


Hai ragione, è in qualche modo ridondante.
fitojb,

Bene, non del tutto: se stai usando sudo sucome root, sì, vai sudo -i, per esempio. Ma aiuta quando si vuole diventare un altro utente: sudo su - myuser.
hggdh,

2
C'è un'altra differenza: sudo -icambierà in /rootdirectory e sudo surimarrà nella directory in cui ti trovi.
laurent,

1
@hggdh, sudo -u myuser.
psusi,

3

Non sarei d'accordo con altre risposte quando si considerano i casi in cui si desidera accedere come utente che non ha una shell. Questo è un caso molto comune con gli utenti assegnati ai servizi.

L'uso di "sudo su" avvierà la shell specificata dall'utente. Tuttavia, nel caso di un utente assegnato al processo del server, la shell è / usr / bin / false e la registrazione non riuscirà. Invece dovresti inserire come:

sudo -sHu <server-user>

che accederà e effettuerà il cd nel suo percorso principale, anche se l'utente non ha una shell assegnata

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.