Was ist der Unterschied zwischen sudo -i und sudo su -

Antworten:

30

Möglicherweise bieten sie praktisch die gleiche Funktion, aber es scheint, dass "sudo -i" leichter ist und einige nützliche Rückverweise in Ihrer Umgebung enthält.

Sie können die zusätzlichen Prozesse sehen, indem Sie sich 'ps auxf' ansehen (f gibt Ihnen eine Gesamtstrukturansicht).

sudo -i liefert diesen Prozessbaum

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 - liefert diesen Prozessbaum

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

Beachten Sie, dass sie mit derselben Bash-Prozess-PID (4482) beginnen, aber dass su - einen weiteren Schritt hervorzurufen scheint.)

Ihr erstes 'sudo' erhöht bereits Ihre Zugriffsebene auf root. Wenn Sie su ausführen, ohne einen Benutzernamen in sudo anzugeben, wird der aktuelle Benutzer zweimal in root geändert.

Eine andere Möglichkeit, dies zu untersuchen, besteht darin, beide Befehle mit strace -f auszuführen.

strace -f -o sudoi sudo -i

vs

strace -f -o sudosu sudo su -

Wenn Sie diese beiden Straces unterscheiden, werden Sie sehen, dass mehr Exeve für sudo su - ausgeführt wird.

Eine Sache noch.

sudo -i behält die von SUDO gesetzten zusätzlichen Umgebungsvariablen bei.

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo löscht diese Variablen.

Joel K
quelle
Danke, ich habe dich als die richtige Antwort gewählt. Eine weitere Frage ist also sudo su -sinnlos?
Howard
Wenn Sie die SUDO-Rückverweise blockieren möchten, kann dies hilfreich sein. Also in diesem Fall nicht sinnlos.
Joel K
Es gibt auch große Unterschiede im Umgang mit Argumenten, im Umgang mit Umgebungsvariablen und in der Sicherheit, wenn Sie kein Root-Benutzer sind. Sehen Sie, was ich hier hinzugefügt habe: serverfault.com/q/601140/102814
Craig Ringer
1

Schussantwort: Nein, sie sind nicht gleich.

Lange Antwort: sudo und su - sind verschiedene Programme, die die gleiche Aufgabe ausführen und Sie zu Root-Rechten erheben.

su war früher de facto der Weg, um auf Linux-Systemen root zu werden. Es bestand jedoch immer die Notwendigkeit, Privilegien zu trennen und einige Prüfungsinformationen zurückzulassen. Auch wenn Sie su tun - alles, was Sie tun, geschieht als root und es ist gefährlich, so viel Power zu haben. Hier kam sudo zur Rettung.

sudo hat einige Eigenschaften, die su nicht hat. Das Schlüsselelement in sudo ist die Fähigkeit, "einen" Befehl als root auszuführen und dann Berechtigungen für normale Benutzer zu löschen. Beispiel: Entfernen Sie eine Datei von root.

sudo rm /root/someFile

Dieser Befehl löscht die Datei, da sudo Sie jedes Mal zum Root-Benutzer macht, wenn Sie den Befehl sudo vor einem anderen Befehl verwenden. Der nächste Befehl, den Sie ausgeführt haben, wird wie ein normaler Benutzer ausgeführt (sofern Sie den Befehl sudo nicht am Anfang anhängen). Auf diese Weise können Sie Verwaltungsaufgaben erledigen und Berechtigungen sofort löschen, um gefährliche Bedingungen zu vermeiden.

sudo bietet auch andere Vorteile, z. B. die Einschränkung der Programmmenge, die ein Benutzer ausführen kann, die Protokollierung von Befehlen, die unter sudo ausgeführt werden, und andere Dinge. Für weitere Informationen Sudo in Kürze

Wenn Sie su - oder sudo -i tun, tun Sie dasselbe. Das wird zur Wurzel, aber denken Sie daran, dass su und sudo völlig unterschiedlich sind und Ihnen als Systemadministrator unterschiedliche Tools zur Verfügung stellen. Persönlich führe ich NIEMALS su aus - und meine pam-Richtlinie verbietet es , niemandem zu erlauben, es auszuführen. In meinen Systemen muss man wegen der zusätzlichen Vorteile immer sudo verwenden.

Weitere Informationen: sudo verwenden und aktivieren

Termiux
quelle
sukann auch nur einen einzigen Befehl ausführen:su -c 'command ...'
Eliah Kagan
Die Frage war nach dem Unterschied zwischen sudo -iund sudo su -, nicht zwischen sudound su.
Alessio Gaeta