Ich habe es bereits aus dem Handbuch gelesen, kann aber keinen Unterschied erkennen.
su
- Benutzer-ID ändern oder Superuser werden
sudo -s [command]
Mit der -s
Option (shell) wird die von der Umgebungsvariablen SHELL angegebene Shell ausgeführt, sofern sie festgelegt ist, oder die in passwd (5) angegebene Shell. Wenn ein Befehl angegeben ist, wird er zur Ausführung an die Shell übergeben. Andernfalls wird eine interaktive Shell ausgeführt.
sudo -i
Beschreibung im Handbuch verschwinden
su user
sich von nicht vertrauenswürdigen Shells anzumelden, sondernsu - user
. Siehe unix.stackexchange.com/q/7013/8250sudo -i
ist schlecht, aber man kann esAntworten:
Der Hauptunterschied zwischen diesen Befehlen besteht darin, wie sie den Zugriff auf ihre Funktionen einschränken.
su
(was "Ersatzbenutzer" oder "Benutzer wechseln" bedeutet) - genau das bewirkt, dass eine andere Shell-Instanz mit den Berechtigungen des Zielbenutzers gestartet wird. Um sicherzustellen, dass Sie dazu berechtigt sind, werden Sie nach dem Kennwort des Zielbenutzers gefragt . Um root zu werden, müssen Sie das root-Passwort kennen. Wenn mehrere Benutzer auf Ihrem Computer Befehle als root ausführen müssen, müssen sie alle das root-Passwort kennen - beachten Sie, dass es dasselbe Passwort sein wird. Wenn Sie einem der Benutzer die Administratorrechte entziehen müssen, müssen Sie das root-Passwort ändern und es nur denjenigen Personen mitteilen, die den Zugang aufrechterhalten müssen - chaotisch.sudo
(hmm ... was ist die Mnemonik? Super-User-DO?) ist völlig anders. Es verwendet eine Konfigurationsdatei (/ etc / sudoers), in der aufgeführt ist, welche Benutzer Rechte für bestimmte Aktionen haben (Befehle als root ausführen usw.). Beim Aufrufen werden Sie nach dem Kennwort des Benutzers gefragt, der sie gestartet hat - um sicherzustellen, dass die Person bei der Terminal ist wirklich derselbe "Joe", der in aufgeführt ist/etc/sudoers
. Um einer Person Administratorrechte zu entziehen, müssen Sie lediglich die Konfigurationsdatei bearbeiten (oder den Benutzer aus einer Gruppe entfernen, die in dieser Konfiguration aufgeführt ist). Dies führt zu einer wesentlich saubereren Verwaltung von Berechtigungen.Infolgedessen hat der
root
Benutzer in vielen Debian-basierten Systemen kein Kennwort festgelegt - dh es ist nicht möglich, sich direkt als root anzumelden.Außerdem
/etc/sudoers
ermöglicht es einige zusätzliche Optionen angeben - dh Benutzer X ist nur in der Lage zu laufen Programm Y usw.Die häufig verwendete
sudo su
Kombination funktioniert folgendermaßen: Zuerst werdensudo
Sie nach Ihrem Kennwort gefragt. Wenn Sie dazu berechtigt sind, rufen Sie den nächsten Befehl (su
) als Superuser auf. Da vonsu
aufgerufen wirdroot
, müssen Sie das Kennwort des Zielbenutzers nicht eingeben. Sosudo su
können Sie eine Shell als ein anderer Benutzer öffnen (einschließlich root), wenn Sie Superuser - Zugriff durch die erlaubt sind/etc/sudoers
Datei.quelle
su
als "Benutzer wechseln" gesehen, aber immer als Superuser. das Standardverhalten ohne den Benutzernamen eines anderen Benutzers (obwohl es sinnvoll ist). Aus Wikipedia : "Der Befehl su, der bereits 1974 als Superuser [1] bezeichnet wurde, wurde auch als" Ersatzbenutzer "," Spoof-Benutzer "oder" Benutzer festlegen "bezeichnet, da er das Ändern des mit dem aktuellen Konto verknüpften Kontos ermöglicht Terminal (Fenster). "sudo su
?sudo
Ermöglicht das Ausführen von Befehlen in Ihrem eigenen Benutzerkonto mit Root-Rechten.su
Mit dieser Option können Sie den Benutzer wechseln, sodass Sie tatsächlich als root angemeldet sind.sudo -s
Führt eine Shell mit Root-Rechten aus.sudo -i
erfasst auch die Umgebung des Root-Benutzers.Um den Unterschied zwischen
su
und zu sehensudo -s
, machen Siecd ~
und dannpwd
nach jedem von ihnen. Im ersten Fall befinden Sie sich im Stammverzeichnis des Stammverzeichnisses, da Sie sich im Stammverzeichnis befinden. Im zweiten Fall befinden Sie sich in Ihrem eigenen Home-Verzeichnis, da Sie selbst über Root-Berechtigungen verfügen.Genau auf diese Frage wird hier noch näher eingegangen .
quelle
cd ~
Ergebnisse unterschiedlich sind, ist darauf zurückzuführen, dass sudo -s die Umgebungsvariable $ HOME nicht festlegt.sudoers
Datei steuert, wer welchen Befehl als ein anderer Benutzer ausführen kann, dies geschieht jedoch, bevor der Befehl ausgeführt wird. Sobald Sie jedoch einen Prozess als beispielsweise root starten durften - der ausgeführte Prozess hat die UID von root und vollen Zugriff auf das System, kann sudo dies nicht mehr einschränken. Auch hier bist du immer entweder du selbst oder root, es gibt keine "Hälfte-n-Hälfte". Wennsudoers
Sie also mit der Datei die Shell als Root ausführen können, sind die Berechtigungen in dieser Shell nicht von einer "normalen" Root-Shell zu unterscheiden.Diese Antwort ist ein Betrug meiner Antwort auf einen Betrug dieser Frage , setzen Sie hier die kanonische Antwort auf, damit die Leute sie finden können!
Der Hauptunterschied zwischen
sudo -i
undsudo -s
ist:sudo -i
gibt dir die root-umgebung, dh deine~/.bashrc
wird ignoriert.sudo -s
gibt Ihnen die Umgebung des Benutzers, damit Ihre~/.bashrc
respektiert wird.Hier ist ein Beispiel, Sie können sehen, dass ich eine Anwendung
lsl
in meinem~/.bin/
Verzeichnis habe, auf die über zugegriffen werden kann,sudo -s
aber mit der nicht zugegriffen werden kannsudo -i
. Beachten Sie auch, dass sich die Bash-Eingabeaufforderung wie gewünscht ändert,sudo -i
jedoch nicht mitsudo -s
:Obwohl
sudo -s
es praktisch ist, Ihnen die vertraute Umgebung zu bieten, empfehle ich die Verwendung aussudo -i
zwei Gründen:.bashrc
.quelle
sudo -s
einer Umgebung, mit der ein Benutzer vertraut ist?su
fragt nach dem Passwort des Benutzers "root".sudo
fragt nach Ihrem eigenen Passwort (und überprüft auch, ob Sie Befehle als root ausführen dürfen, der über konfiguriert wird/etc/sudoers
- standardmäßig dürfen alle Benutzerkonten, die zu den Gruppen "admin" oder "sudo" gehören, sudo verwenden).sudo -s
Startet eine Shell als root, ändert aber nicht Ihr Arbeitsverzeichnis.sudo -i
simuliert ein Login in das Root-Konto: Ihr Arbeitsverzeichnis wird es sein/root
, und Roots.profile
etc. werden wie beim Login bezogen.quelle
sudo -s
ist fast gleichsu
($ HOME ist anders) undsudo -i
ist gleichsu -
In Ubuntu oder einem verwandten System finde ich
su
im herkömmlichen Sinne für Superuser wenig Verwendung .sudo
behandelt diesen Fall viel besser. Essu
eignet sich jedoch hervorragend, um in einmaligen Situationen, in denen die Konfiguration von Sudoern dumm wäre, ein anderer Benutzer zu werden.Wenn ich zum Beispiel mein System von einer Live-CD / einem USB-Stick aus repariere, werde ich oft meine Festplatte und andere notwendige Dinge
chroot
in das System einbinden. In einem solchen Fall lautet mein erster Befehl im Allgemeinen:Auf diese Weise arbeite ich nicht als Root, sondern als normaler Benutzer und verwende sie dann
sudo
entsprechend.quelle
su
Fragt nach dem root-Passwort, wird root und öffnet eine interaktive Nicht-Login-Shell.su -
Fragt nach dem root-Passwort, wird root und öffnet eine interaktive Login-Shell.sudo -s
Fragt Sie nach Ihren Passwörtern, wird root und öffnet eine interaktive Nicht-Login-Shell.sudo -i
Fragt nach Ihren Passwörtern, wird root, öffnet eine interaktive Login-Shell.Es wird empfohlen, diese beiden zu verwenden.
sudo su
Fragt nach deinem Passwort, wird für eine Sekunde root und läuftsu
als root`.sudo su -
Fragt nach Ihrem Passwort, wird für eine Sekundesu -
root und läuft als root.Also in diesem Fall laufen Sie
su
mitsudo
und Sie müssen nicht root tatsächliche Passwort kennen. Die Ergebnisse stimmen mitsu
und übereinsu -
.quelle