Antworten:
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.
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
su
kann auch nur einen einzigen Befehl ausführen:su -c 'command ...'
sudo -i
und sudo su -
, nicht zwischen sudo
und su
.
sudo su -
sinnlos?