Cosa fa realmente "sudo -s"?


26

Sto usando Ubuntu 10.04.

Ho notato che dopo aver eseguito " sudo -s " nel terminale, il prompt è cambiato da

" XXX @ XXX "

a

" root @ XXX ",

sembra cambiato in privilegio di root.

Ma quando controllo la documentazione del comando "sudo" qui , spiega un'altra storia di "sudo -s", qualcuno può spiegarmi cosa sta facendo esattamente " sudo -s "?


6
Dovresti chiederlo a askubuntu.com

7
Perché askubuntu.com? sudonon è specifico per Ubuntu ...
Dave Sherohman,

Risposte:


9

I due non sono davvero incoerenti: il sudocomando cambia sempre l'utente, in root o in quello specificato dall'utente con l' -uopzione. Tutto ciò che -sserve è fornire una scorciatoia per avviare una shell come quell'utente. È davvero equivalente a:

sudo $SHELL

tranne che probabilmente fallback /bin/sho qualcosa del genere se SHELLnon impostato.


6

sudo -sesegue la shell specificata nella $SHELLvariabile di ambiente come superutente / root. È possibile specificare un altro utente utilizzando -u.

La $SHELLvariabile di ambiente contiene il percorso della shell di accesso predefinita dell'utente. L'impostazione effettiva per il programma shell predefinito è di solito in etc/passwd. A seconda di ciò che hai fatto nella sessione corrente, la variabile $ SHELL potrebbe non contenere il programma di shell che stai attualmente utilizzando. Se accedi automaticamente con zsh per esempio, ma poi invochi bash, $ SHELL non cambierà da /bin/zsh.

Mostra l'utente corrente e il programma shell: echo $(whoami) is logged in and shell is $0

  • whoami stampa il nome utente con il quale l'utente sta lavorando.
  • $0 contiene il nome / percorso del programma attualmente in esecuzione (programma shell in questo caso).

3

Dal manuale:

sudo consente a un utente autorizzato di eseguire un comando come superutente o un altro utente, come specificato nel file sudoers.

-s Shell, esegue la shell specificata dalla variabile d'ambiente SHELL se è impostata o la shell come specificato in passwd (5).

Più seriamente, i sudo -s eseguono una variabile di ambiente shell. Poiché non hai aggiunto alcuna variabile, viene eseguito come specificato in passwd, quindi connettiti come root.


1
Dal manuale non è ovvio che se non si fornisce un utente, il valore predefinito è root. Dovresti leggere la descrizione per l' -uopzione per impararlo. Ma per qualcuno che non ha familiarità sudo, non saprebbero guardare -u.
Wisbucky


0

Sembra che stia creando un'altra istanza della shell sopra la shell corrente, ma con i privilegi di root. Scommetto che dopo averlo fatto sudo -sse digiti exit, tornerai alla shell originale.


-1

sudo -s ti consente di eseguire un comando per il quale sei pre-autorizzato [vedi / etc / sudoers], possibilmente chiedendoti di confermare il tuo ID corrente.

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.