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


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

Sind sie gleich?


18
2018-02-14 06:23


Ursprung




Antworten:


Sie können funktionell in der Nähe der gleichen Sache bieten, aber es scheint "sudo -i" ist leichter und hält einige handliche Rückbezüge in Ihrer Umgebung.

Sie können die zusätzlichen Prozesse sehen, indem Sie auf 'ps auxf' schauen (f gibt Ihnen eine Waldansicht)

sudo -i  ergibt 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 - ergibt 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 von demselben Bash-Prozess pid 4482 ausgehen, aber dass su - scheint einen weiteren Schritt hervorzubringen.)

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 zu 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, sehen Sie, dass mehr exe für sudo su - ausgeführt wird.

Eine Sache noch.

sudo -i verwaltet die zusätzlichen Umgebungsvariablen, die von SUDO festgelegt wurden.

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

Sudo übersteuert diese Variablen.


30
2018-02-14 07:46



Danke, ich habe dich als die richtige Antwort gewählt. Noch eine Frage sudo su - zwecklos? - Howard
Wenn du die SUDO-Referenzen verfälschen willst, könnte es nützlich sein. Also nicht sinnlos in diesem Fall. - Joel K
Es gibt auch große Unterschiede in der Handhabung von Argumenten, in der Verarbeitung von Umgebungsvariablen und in der Sicherheit, wenn Sie ein Nicht-Root-Benutzer werden. Sehen Sie, was ich hier hinzugefügt habe: serverfault.com/q/601140/102814 - Craig Ringer


Schussantwort: Nein, sie sind nicht gleich.

Lange Antwort: sudo und su - sind verschiedene Programme, die dieselbe Aufgabe erfüllen, dh Sie zu root-Rechten erheben.

su war die De-facto-Methode, Root auf Linux-Systemen zu werden. Es bestand jedoch immer die Notwendigkeit, Berechtigungen zu trennen und einige Auditing-Informationen zurückzulassen. Auch wenn du es tust su - alles, was du tust, wird als Wurzel gemacht und es ist gefährlich, so viel Macht zu haben. Hier kam sudo zu Hilfe.

Sudo hat einige Eigenschaften, die su nicht. Das Schlüsselelement in sudo ist die Fähigkeit, einen "one" -Befehl als root auszuführen und dann Berechtigungen an normale Benutzer abzusetzen. Beispiel: Entfernen Sie eine Datei im Besitz von root. 

sudo rm /root/someFile

Mit diesem Befehl wird die Datei gelöscht, da sudo Sie jedes Mal, wenn Sie den Befehl sudo vor einem anderen Befehl verwenden, in root versetzt. Der nächste Befehl, den Sie ausführen, wird wie ein normaler Benutzer ausgeführt (außer Sie fügen den Befehl sudo am Anfang an). Auf diese Weise können Sie Verwaltungsaufgaben ausführen und anschließend sofort Berechtigungen löschen, um gefährliche Situationen zu vermeiden.

sudo bietet auch andere Vorteile wie die Einschränkung des Programmsatzes, den ein Benutzer ausführen kann, protokolliert Befehle, die unter sudo ausgeführt werden, und andere Dinge. Für mehr Information sudo auf den Punkt gebracht

Wenn Sie das tun su - oder sudo -i Du machst das Gleiche. Das wird Wurzel, aber bedenke das su und Sudo sind völlig unterschiedlich und bieten Ihnen verschiedene Tools als Systemadministrator. Persönlich laufe ich NIEMALS su - und mein PAM-Politik verbietet esund niemandem erlauben, es zu führen. In meinen Systemen muss man wegen der zusätzlichen Vorteile immer sudo verwenden.

Mehr Info: Sudo verwenden und aktivieren


1
2018-02-17 15:17



su kann auch nur einen einzigen Befehl ausführen: su -c 'command ...' - Eliah Kagan
Die Frage war der Unterschied zwischen sudo -i und sudo su -, nicht zwischen sudo und su. - Alessio Gaeta