Ich habe also die Unterschiede zwischen der Verwendung von su
und gelesen sudo
und alle sind sich einig, dass der sudo
Ansatz sicherer ist, als den Zugriff auf das Root-Konto selbst zuzulassen. Sie sagen, dass Sie mit dem Root-Konto Ihr gesamtes System mit nur einem einzigen Befehl brechen könnten. Das verstehe ich. ABER der erste Benutzer, der auf dem System erstellt wurde, hat mit sudo auch Zugriff auf alle Befehle. Dies kann ich durch Laufen herausfinden su -l
. Wenn dies der Fall ist, kann ich einfach rennen, sudo <game-ending command>
um mein System zu ruinieren. Wie ist dieser Ansatz besser oder sicherer, als mir direkten Zugriff auf das Superuser-Konto zu gewähren? Ich kann alle die gleichen Befehle ausführen ...
Liegt es daran, sudo
dass ich über die Befehlszeile dem Computer ausdrücklich sage, dass ich zu wissen glaube, was ich tue? Glauben sie, dass die Leute vergessen werden, dass sie sich unter dem Superuser-Konto befinden, wenn sie dies nicht ausdrücklich sagen?
Die Leute geben auch an, dass wenn das System von jemandem aus dem Ausland kompromittiert und betreten würde, es ihnen unter dem Root-Account möglich wäre, schreckliche Dinge mit meinem System anzufangen. Aber es scheint mir, dass sie, wenn sie bereits Zugriff auf mein Konto haben und mein Passwort kennen, dieselben schrecklichen Dinge tun können, indem sie sudo verwenden und mein Passwort eingeben, da sie nicht einmal das Passwort des Super-Users kennen müssen. Was bekomme ich nicht hier?
quelle
Antworten:
Persönlich halte ich es nicht unbedingt für sicherer und die meisten Vorteile (von sudo) liegen auf einem Mehrbenutzersystem. Auf einem Einzelplatzsystem handelt es sich wahrscheinlich um eine Wäsche.
Die Vorteile sind (in keiner bestimmten Reihenfolge):
sudo -i
Dies ist wahrscheinlich die beste Methode, um die Umgebungsvariablen von root von Ihrem Benutzer zu isolieren. Dies kommt von Zeit zu Zeit vor, ist aber mäßig esoterisch. Siehe https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shellsEs gibt wahrscheinlich mehr Vorteile, aber das sind die wichtigsten, IMHO.
Siehe auch - https://help.ubuntu.com/community/RootSudo
Um zu versuchen, einige Ihrer anderen Gedanken zu beantworten:
Während Sie also Probleme oder Fehler mit sudo beobachtet haben, hat su genau die gleichen Schwachstellen und su ist sudo in diesen Aspekten nicht überlegen, IMHO
quelle
Stellen Sie sich vor, Sie haben 20 Minuten Zeit, um etwas Komplexes zu tun. Du bist ein bisschen verkatert und musst dich beeilen. "Lass uns su benutzen", sagst du. "Es wird einige Zeit sparen" ist Ihre Argumentation.
Sie tippen aus Versehen
Anstatt von
Ihr System mauert sich jetzt selbst und Sie haben 10 Minuten bis zu Ihrer Deadline.
Wenn Sie explizit auswählen, wann Sie root benötigen, können Sie das Risiko minimieren. Root wird möglicherweise nicht benötigt.
rm -r ./*
Warum also? Warum das Risiko eingehen?Das ist, was "Sicherheit" hier bedeutet. Minimierung des Risikos, dass Benutzer (alle Benutzer, nicht nur Anfänger) einen schwerwiegenden Fehler machen.
Dies ist natürlich ein extremes Beispiel, das in einer Produktionsumgebung nicht zulässig sein sollte (ich garantiere, dass dies in einer Produktionsumgebung geschehen ist).
Sicherheitstechnisch gibt es einige Dinge, für die sudo auch besser ist. Wie @Panther sagt - Protokollierung, Einschränkungen, Root-Passwort ist SPOF, etc.)
quelle
chown -R nobody:nobody /
oder sogarchown -R nobody ../
als Root.chmod
Natürlich gibt es auch im rekursiven Modus ähnliche Probleme. Aber das Beste, was Sie machen, ist, dass Sie nur root sein sollten, wenn Sie das brauchen. Je weniger Rechte Ihr Login hat, desto besser für den normalen Gebrauch.sudo
? Du schreibstsudo rm -rf /*
stattsudo rm -rf ./*
und boomst wieder.sudo rm -rf ./*
. Vermutlich haben Sie Schreibzugriff auf die Inhalte im aktuellen Verzeichnis, sodass Sie für diesen Befehl kein sudo benötigen. So die typoed Befehl endet alsrm -rf /*
, das eine lange Kette von „Zugriff verweigert“ -Meldungen ergibt, so dass Sie wissen , dass Sie benötigen ,ctrl-c
bevor es dem Zeug bekommt man tatsächlich löschen können, anstatt nur zu löschen alles/bin
,/boot
,/dev
und die andere Hälfte/etc
vor Sie erkennen sogar, dass etwas nicht stimmt.Ich möchte den anderen Antworten eine historische Perspektive hinzufügen. Leider habe ich bis auf meine eigenen Erinnerungen an Usenet-Diskussionen und Zeitschriftenartikel keine Quellen parat.
Vor einiger Zeit, in den 1990er Jahren, machten es Distributionen einfacher, Linux auf Ihrer eigenen Hardware zu installieren, selbst mit wenig Computerkenntnissen. So zog Linux immer mehr Leute an, die überraschenderweise zuvor nicht als Systemadministratoren ausgebildet worden waren etwas UN * X-Dialekt. Stattdessen waren viele an (Einzelbenutzer-) Systeme wie Windows 95/98 gewöhnt. Und sie erfuhren, dass die meisten Linux-Systemadministrationsaufgaben es erforderlich machten, unter diesem seltsamen "Root" -Konto zu arbeiten.
Aus diesem Grund haben sich einige Benutzer nur als root angemeldet und dieses Konto für ihre gesamte tägliche Arbeit verwendet. Warum sollten sie immer wieder
su
das root- Passwort eingeben oder sich nur für einige Admin-Befehle in ein neues tty einloggen müssen? Aber root für alles zu verwenden, ist natürlich keine gute Idee, da Sie Ihrem System viel mehr Schaden zufügen könnten, wenn Sie einen unbekümmerten Befehl an der falschen Stelle ausführen. Dies veranlasste sogar eine Distribution (war es SuSE?), Den Desktop-Hintergrund für den Root- Benutzer so zu ändern , dass eine große Warnung angezeigt wurde, dass Sie dieses Konto nur für Administratoraufgaben verwenden sollten.Der Ubuntu-Weg mit
sudo
hat also einige Vorteile (zusätzlich zu den bereits von Panther aufgelisteten ).sudo
speichert Ihre Anmeldeinformationen zwischen, sodass Sie für mehrere Admin-Befehle nacheinander Ihr Kennwort nur einmal eingeben müssen (im Gegensatz zusu
). Dies reduziert den Drang, eine Shell oder ein neues Terminal mit Root- Rechten zu öffnen .¹ Und für diejenigen, die es nicht wagen, gibt es Installationspartys.
² Sie können jedoch einen Befehl wie
sudo -i
oder verwendensudo su - root
, um eine Root-Shell abzurufen, nachdem Sie sich als normaler Benutzer angemeldet haben.³ Aber Sie wissen natürlich, dass Sie Befehle nicht einfach aus dem Internet kopieren und einfügen sollten , oder?
quelle
sudo su -
odersudo su - root
? Weil ich ähnliche Behauptungen gesehen habe, zB, dass MacOS X kein Root-root
und ein Kennwort nicht an der Anmeldeaufforderung oder im X-Anmeldedialog eingeben und Ihre Sitzung als root starten . Sie können jedoch einen Ihrer Befehle verwenden (ich bevorzuge ihn,sudo -i
da er kürzer und faul ist), um eine Root-Shell zu erhalten.Es ist seit Jahrzehnten möglich, die Root-Anmeldung über ssh zu deaktivieren. Die Ubuntu-Methode, den Root-Account zu deaktivieren und die Leute zum Sudo zu machen, ist nichts weiter als eine Spielerei. Nur "sudo -s" und Sie haben eine Root-Shell. Deaktivieren Sie die Root-Anmeldung über ssh und lassen Sie sie dort.
quelle
Abhängig von der Konfiguration
sudo <game ending command>
wird nicht unbedingt funktionieren. Wenn in dersudoers
Konfiguration "Benutzer ALL = (ALL) ALL" steht,sudo
bietet dies natürlich keinen zusätzlichen Schutz. Sie können jedoch eine Liste privilegierter Befehle angeben, die Sie häufig ausführen müssen, z. B. das Installieren neuer Pakete, und gefährliche Befehle wie zrm
.Auf diese Weise können Sie alle Befehle ausführen, wenn Sie sich als anmelden.
root
Da dies jedoch nur gelegentlich erforderlich ist, wird das Risiko einer Ausführung<game ending command>
erheblich verringert.quelle
Dass Sie in sudo nur bestimmte Befehle zulassen können, ist nicht der einzige Vorteil von sudo gegenüber su.
In den meisten Geschäften ist es nicht einmal der wichtigste Vorteil.
Mit sudo wissen Sie, wer einen bestimmten Befehl ausgeführt hat.
Nun, vielleicht ist dir das egal. Beispielsweise könnten Sie der einzige Benutzer Ihres Computers sein. Wenn ja, ist sudo möglicherweise nicht besser als su.
Aber viele Hosts haben mehr als einen Administrator.
sudo wird dann sehr nützlich, denn wenn jemand das Falsche tut, lässt sudo Sie wissen, wer es getan hat.
Auf diese Weise können Sie nachvollziehen, warum Fehler aufgetreten sind, und Personen darüber informieren, dass Fehler vermieden oder die Tools bei Bedarf von jemandem entfernt werden können.
Als Bonus, wenn die Leute wissen, dass ihre Handlungen aufgezeichnet wurden, sind sie oft ein bisschen vorsichtiger.
Sudo ist nicht perfekt.
Wenn zwei Personen gleichzeitig "sudo sh" ausführen, kann es schwierig sein, Befehle dem einen oder anderen zuzuweisen.
Und ein böswilliger Administrator kann Protokolle jederzeit entfernen oder bearbeiten - obwohl dies nicht immer so einfach ist, wie man denkt, insbesondere wenn Sie zentral protokolliert haben.
sudo beendet nicht unbedingt eine dumme oder böswillige Handlung aus allen in der ursprünglichen Frage genannten Gründen.
Aber es gibt Ihnen eine viel bessere Chance, eine Wiederholung zu verhindern.
quelle
sudo
alles erlaubt ist. Natürlich können Sie es so konfigurieren, dass es die Befehle einschränkt, die ein Benutzer ausführen darf, aber ich glaube nicht, dass dies bei der gestellten Frage der Fall ist.