Was sind die Vorteile von sudo gegenüber su?

19

Was ist der tatsächliche Nutzen, den Ubuntu (oder Debian-Derivate) durch die Deaktivierung des Root-Benutzers erzielen?

Überall, wo ich lese, heißt es, dass unbeabsichtigte Schäden für unerfahrene Benutzer verhindert werden sollen. Ich möchte was genau wissen, da sudoich alle Befehle ausführen kann (die ich kenne / benutze).

In welchem ​​Fall kann die Wurzel Schaden anrichten, wohingegen sudodies nicht möglich ist?

PS: Ich weiß wie sudodas geht.

Wir sind
quelle

Antworten:

31

In welchem ​​Fall kann root Schaden anrichten, während sudo dies nicht kann?

Da Sie normalerweise sudojedes Mal aufrufen müssen, wenn Sie etwas tun möchten, das Privilegien erfordert, ist die Begründung, dass Sie "denken, bevor Sie springen", dh nicht einfach sudo vor etwas halten, ohne eine Sekunde darüber nachzudenken, welchen Befehl Sie ausführen wird tun.

Mit suauf der anderen Seite, wenn Sie in sind, sind Sie in. Sie carte blanche haben (eine offene Lizenz) alles zu tun, und die Begründung ist , dass Sie für einen Moment vergessen könnten , dass Sie diese Privilegien haben und wenn Sie haben Pech, führen Sie etwas aus, das Ihr System ernsthaft beeinträchtigt / beschädigt. Wenn Sie keine su-Berechtigungen hatten, hätte der Befehl nichts Ernstes getan.

ish
quelle
8
Die Logik "Denken, bevor Sie springen" ist so naiv wie das Denken, dass Benutzer aufhören werden zu denken, wenn ein Dialogfeld mit der Meldung "Möchten Sie TrashTheComputer.Virus wirklich installieren: Ja / Nein?" Angezeigt wird. verringert die Infektionsrate mit Malware.
Dan Neely
9
@ DanNeely - ich glaube nicht. Ich gebe viele Befehle ein und die meisten von ihnen erfordern keine sudo, deshalb benutze ich sie nicht. Wenn ich es benutze, gibt es mir einen Moment der Pause. Ja, ich spreche als Programmierer, kein durchschnittlicher Benutzer, aber andererseits verwenden durchschnittliche Benutzer nicht die Befehlszeile.
Nathan Long
2
@NathanLong nicht ganz richtig mit Linux, dem Grund , diese Frage , warum zeigt eine „durchschnittliche Nutzer“ nicht zu verstehen , besteht die Verwendung sudoüber su. Zu oft sagen die Leute "benutze sudo, weil es sicherer ist als su" - was naiv zu denken ist, da es überhaupt nicht sicherer ist. Zu vergessen su, dass Sie einen Befehl verwendet haben, ist keine Entschuldigung. Dies ist nur eine Inkompetenz, wenn Sie versehentlich einen Befehl als root ausführen.
Asche
1
@ash Ich sage immer noch, ein durchschnittlicher Benutzer würde nicht nach den vergleichenden Auswirkungen von zwei Methoden zur Eskalation von Benutzerrechten fragen. Tatsächlich hat OP Fragen zu StackOverflow. Abgesehen von OP ist es einfacher, sich daran zu erinnern, was Sie vor 15 Sekunden getan haben, als sich daran zu erinnern, was Sie gestern getan haben, und Sie könnten leicht eine Terminalsitzung haben, die sich über mehrere Tage erstreckt. Also ja, es liegt an dir, nicht zu vergessen, wann du es benutzt su, aber persönlich würde ich es vorziehen, keine Bomben aufzustellen, als anzunehmen, dass ich daran denke, sie zu entwaffnen.
Nathan Long
16

IMO Die Hauptvorteile von sudo gegenüber su sind, dass sudo eine überlegene Protokollierung der ausgeführten Befehle hat und sudo eine genauere Kontrolle darüber gibt, was Benutzer tun können.

su ist alles oder nichts, aber sudo kann so konfiguriert werden, dass auf einige, aber nicht alle Befehle zugegriffen werden kann.

Eine ausführlichere Beschreibung mit Vor- und Nachteilen finden Sie unter https://help.ubuntu.com/community/RootSudo .

Panther
quelle
11

su -

Wenn Sie als root angemeldet sind , werden alle Aufgaben, Aktionen oder zufälligen Ereignisse, die durch den Besuch einer bestimmten Website usw. verursacht werden, als Superuser ausgeführt .

sudo

Wenn Sie sudo aufrufen , während Sie einen Befehl ausführen, wird nur dieser Befehl als Superuser ausgeführt .

Sie werden nach Ihrem Passwort gefragt , bevor der Befehl ausgeführt wird. Daher ist auch eine Benutzerinteraktion durch Sie erforderlich .

Versuche, sudo aufzurufen, können ebenfalls protokolliert werden .

david6
quelle
2
In der Tat werden Sie nach dem Kennwort des aktuellen Benutzers gefragt, wodurch die Verwaltung des Root-Kennworts vereinfacht wird. Wenn ein Konto vom System entfernt wird, muss das Root-Passwort nicht zurückgesetzt werden. Noch besser ist, dass für das Root-Konto überhaupt kein Kennwort erforderlich ist, sodass das Root-Konto nicht durch brachiales Erzwingen gefährdet werden kann.
jippie
In der allgemeinen guten Praxis von @jippie wird festgelegt, dass das root-Passwort entfernt / blockiert / ungültig gemacht wird und der Zugriff nur über gestattet wird sudo su. während der Bindestrich -ein Flag ist, das von suIhrer Shell akzeptiert wird und Ihre Shell so behandelt, als wären Sie als Benutzer angemeldet (führt einen anderen Satz von Umgebungsdateien aus, z. B. .bashrc / .profile)
ash
3

Es geht um die Benutzer- / Passwortverwaltung für Sysadmins.

Wenn Sie mehrere Benutzer haben, sollten diese über separate Konten verfügen und mit diesen Konten nachverfolgt werden können. Das bedeutet, dass Menschen ihre Identität nicht verbergen können. Wenn Sie bestimmte Benutzerberechtigungen widerrufen müssen, müssen Sie auch das root-Passwort nicht zurücksetzen. Wenn Sie jeder Person in einer Umgebung mit mehr als 2 Administratoren das root-Passwort geben, wird dies zu einem Albtraum, wenn eine Person beendet wird. Sie müssen es nicht nur ändern, sondern auch mitteilen usw. All diese Dinge müssen auch passieren, wenn einer von ihnen einen Laptop gestohlen hat oder ähnliches. Ein Account mit einem Passwort pro Person vereinfacht die Administration. Es ähnelt der Philosophie, warum jeder Dienst einen eigenen Account haben sollte. Wenn ein Konto gefährdet ist, müssen Sie kein weiteres Dutzend Dienste (z. B. Sicherungsaufgaben) neu konfigurieren, um ein anderes Konto zu verwenden.

Ich finde es auch persönlich bequem, kein weiteres Passwort zu haben, um den Überblick zu behalten, zu verlieren und kompromittiert zu haben. Unter RHEL deaktiviere ich das Root-Konto nach der Konfiguration von sudo speziell, damit ich es nicht nachverfolgen muss. Hin und wieder schreibt ein Benutzer die sudo-Datei, dies kann jedoch im Einzelbenutzermodus behoben werden. (Natürlich ist es normalerweise eine Produktionsmaschine.)

HINWEIS: Mit 'sudo bash' können Sie die Eingabe von sudo für jeden Befehl überspringen ...

Flackerfliege
quelle
Ich habe immer sudo mc: D
Rony
Die einzige Antwort auf diese Frage, die es verdient, gewählt zu werden, ist eine klare Antwort auf die Frage, ohne die Frage weiter zu verdeutlichen oder die Menschen in einen falschen Sinn für Informationen zu führen.
Asche
@flickerfly, ich glaube, dass in "das root-Passwort für denselben Benutzer zurücksetzen" das "für denselben Benutzer" entfernt werden sollte - es wird auf diese Weise genauer.
Richlv
Du hast recht. Ich habe die von Ihnen vorgeschlagene Änderung vorgenommen. Ich bin mir nicht sicher, was ich dort vorhatte.
Flickerfly
2

Ich denke zuerst müssen wir untersuchen, was su und sudo eigentlich sind

su - steht für Substitute User. Sie verwenden diese Option, um mit dem Kennwort dieses Benutzers als anderer Benutzer zu einer Shell zu wechseln. Wird häufig mit root verwendet. Für die Ausführung als root ist kein Kennwort erforderlich.

sudo - Ermöglicht einem berechtigten Benutzer, einen bestimmten Befehl als anderer Benutzer auszuführen. Wird auch häufig mit root verwendet. Auf diese Weise können Sie jedoch gezielt steuern, welche Befehle als andere Verwendung ausgeführt werden können. (Sie könnten beispielsweise einem Benutzer die Möglichkeit geben, ein init.d-Skript auszuführen, aber sonst nichts.)

Beachten Sie, dass Sie jederzeit sudo suoder ausführen sudo -ikönnen. Dadurch erhalten Sie eine Root-Shell. Kein root-Passwort bedeutet jedoch, dass Sie sich nicht direkt als root anmelden müssen. Dies bedeutet, dass niemand in diesen Benutzer eindringen kann.

BEARBEITEN: Vielleicht lautet die Antwort, nach der Sie suchen sudo,: Wenn Sie kein Root-Passwort haben, werden Sie gezwungen, dieses zu verwenden , was Sie natürlich mit der sudoPhilosophie in Einklang bringt, die vorschlägt, eine größere Kontrolle über die als Root ausgeführten Aktionen zu erzwingen.

user606723
quelle
Ich habe das selbst geschrieben ....
user606723
2

Darüber hinaus müssen Überlegungen zur Protokollierung zwischen sudo und su berücksichtigt werden. Su zu sein macht einfach alles als root ohne Eintrag außer einer Zeile im Authentifizierungsprotokoll, die besagt, dass Sie root geworden sind.

Sudo auf der anderen Seite - wird immer als Ihre Benutzer-ID mit eskalierten Privilegien protokolliert.

kd1s
quelle
0

Normalerweise ist es einfacher, sich als su anzumelden, wenn Sie administrative Aufgaben ausführen. Es gibt jedoch mindestens eine Ausnahme: Wenn es um Dateieigentum geht. Wenn Sie einen Benutzer als Eigentümer einer Datei benötigen, melden Sie sich als dieser Benutzer an und verwenden Sie sudo, um Dateien herunterzuladen oder zu kopieren. Einfache Beispiele sind Lesezeichen und Hintergrundbilddateien. Wenn ein Benutzer die Datei nicht besitzt, schlägt das Firefox-Lesezeichen "Aus Datei" "Wiederherstellen" fehl. Wenn Sie ein Desktop-Hintergrundbild festlegen, funktioniert es möglicherweise nur, wenn Sie Eigentümer der Datei sind. Manchmal können Sie nur Berechtigungen festlegen oder als ausführbare Datei aktivieren, aber einige Einstellungen oder Programme schlagen fehl, wenn Sie nicht der Eigentümer einer Datei sind.

DotheMath45
quelle
Sie melden sich als root an und verwenden Firefox, um im Internet zu surfen? Ich denke, dies ist der Grund für die Deaktivierung des Root-Accounts. Es entfällt die Möglichkeit, sich für den täglichen Gebrauch nur als root anzumelden.
Adempewolff