Was macht eigentlich "sudo -s"?

26

Ich benutze Ubuntu 10.04.

Ich stelle fest, dass sich die Eingabeaufforderung nach dem Ausführen von " sudo -s " im Terminal von geändert hat

" XXX @ XXX "

zu

" root @ XXX ",

Es scheint, als hätte es sich in ein Root-Privileg verwandelt.

Aber wenn ich die Dokumentation des Befehls "sudo" hier überprüfe , wird eine andere Geschichte von "sudo -s" erklärt. Kann mir jemand erklären, was " sudo -s " genau tut?

Leem
quelle
6
Fragen Sie dies bitte bei askubuntu.com
7
Warum askubuntu.com? sudoist kaum Ubuntu-spezifisch ...
Dave Sherohman

Antworten:

9

Die beiden sind nicht wirklich inkonsistent - der sudoBefehl wechselt immer den Benutzer entweder zu root oder zu dem Benutzer, den Sie mit dem -uSchalter angeben . Sie -smüssen lediglich eine Verknüpfung zum Starten einer Shell als dieser Benutzer bereitstellen. Es ist wirklich gleichbedeutend mit:

sudo $SHELL

außer dass es wahrscheinlich auf /bin/shoder etwas zurückgreifen wird, wenn SHELLes nicht gesetzt ist.

TomH
quelle
6

sudo -sFührt die in Ihrer $SHELLUmgebungsvariablen angegebene Shell als Superuser / Root aus. Sie können einen anderen Benutzer mit angeben -u.

Die $SHELLUmgebungsvariable enthält den Pfad zur Standardanmeldeshell des Benutzers. Die tatsächliche Einstellung für das Standard-Shell-Programm ist normalerweise in etc/passwd. Je nachdem, was Sie in Ihrer aktuellen Sitzung getan haben, enthält die Variable $ SHELL möglicherweise nicht das Shell-Programm, das Sie gerade verwenden. Wenn Sie sich beispielsweise automatisch mit zsh anmelden, dann aber bash aufrufen, ändert sich von $ SHELL nichts /bin/zsh.

Zeigt das aktuelle Benutzer- und Shell-Programm an: echo $(whoami) is logged in and shell is $0

  • whoami druckt den Benutzernamen aus, unter dem der Benutzer arbeitet.
  • $0 enthält den Namen / Pfad des aktuell laufenden Programms (in diesem Fall Shell-Programm).
RKelley
quelle
3

Aus dem Handbuch:

Mit sudo kann ein berechtigter Benutzer einen Befehl als Superuser oder als anderer Benutzer ausführen, wie in der sudoers-Datei angegeben.

-s Shell, führt die von der Umgebungsvariablen SHELL angegebene Shell aus, wenn sie festgelegt ist, oder die in passwd (5) angegebene Shell.

Im Ernst, die sudo -s führen eine Shell-Umgebungsvariable aus. Da Sie keine Variable hinzugefügt haben, wird sie wie in passwd angegeben ausgeführt und verbindet Sie als Root.

Anarko_Bizounours
quelle
1
Aus dem Handbuch geht nicht hervor, dass der Standardwert root ist, wenn Sie keinen Benutzer angeben. Sie müssten die Beschreibung für die -uOption lesen, um das zu lernen. Aber für jemanden, der sich nicht auskennt sudo, würde er es nicht zu schätzen wissen -u.
wisbucky
0

Es hört sich so an, als würde eine weitere Instanz der Shell über der aktuellen Shell erstellt, jedoch mit Root-Rechten. Ich wette, nachdem Sie sudo -sexit eingegeben haben, kehren Sie zur ursprünglichen Shell zurück.

Noah Duncan
quelle
-1

Mit sudo -s können Sie einen Befehl ausführen, für den Sie eine Vorautorisierung haben [siehe / etc / sudoers]. Möglicherweise müssen Sie Ihre aktuelle ID bestätigen.

Eric Herlitz
quelle