Wenn ich die Linux-Philosophie richtig verstehe, sudo
sollte sparsam damit umgegangen werden, und die meisten Vorgänge sollten als Benutzer mit unzureichenden Rechten ausgeführt werden. Aber das scheint nicht sinnvoll zu sein, da ich immer Eingaben machen muss sudo
, ob ich Pakete verwalte, Konfigurationsdateien bearbeite, ein Programm aus dem Quellcode installiere oder was Sie haben. Dies sind nicht einmal technische Dinge, sondern alles, was ein normaler Benutzer tut.
Es erinnert mich sehr an die Windows-Benutzerkontensteuerung, die entweder deaktiviert oder so konfiguriert wird, dass kein Kennwort erforderlich ist (nur ein Klick). Darüber hinaus sind die Windows-Benutzer vieler Benutzer auch Administratorkonten.
Ich habe auch gesehen, dass einige Leute Befehle anzeigen, für die sudo
Berechtigungen ohne erforderlich sind sudo
. Haben sie ihr System so konfiguriert, dass sudo
es nicht erforderlich ist?
sudo
, um Änderungen am System vorzunehmen. Wenn Sie nur auf Ihren eigenen Dateien / Desktops arbeiten, haben Sie keine Auswirkungen auf andere Benutzer. Sie benötigen daher keine erhöhten Berechtigungen. Wenn Sie privilegierte Befehle ohne sudo ausführen, sind Sie wahrscheinlich bereits ein Superuser (dh root) und das ist normalerweise weniger ratsam als die Verwendung von sudo für die spezifischen systemweiten Aufgabensudo
wenn Sie nicht sollten? Ein normalen Unix - Benutzer-Befehle zum größten Teil aus bestehen solltencd
,ls
, Verschieben, Kopieren, Entfernen und Bearbeiten von Dateien , die sie Zugriff haben. Wenn Ihre üblichen Befehle nicht aus diesen bestehen, sind Sie wahrscheinlich kein regulärer Unix-Benutzer.sudo !!
zuletzt mit sudo eingegeben haben, erneut ausführen.Antworten:
Sie haben diese Systemverwaltungsfunktionen erwähnt
als Dinge, die
In einem typischen Mehrbenutzersystem sind dies keine gewöhnlichen Benutzeraktionen. Ein Systemadministrator würde sich darüber Sorgen machen. Normale Benutzer (nicht "unterprivilegiert") können das System dann verwenden, ohne sich um die Wartung zu kümmern.
Ja, auf einem Heimsystem müssen Sie das System nicht nur verwalten, sondern auch verwenden.
Ist es wirklich so schwer zu benutzen
sudo
? Denken Sie daran, dass wenn es nur Ihr System ist, es keinen Grund gibt, warum Sie entweder nicht in eineroot
Shell einsteigen können (sudo -s
- in diesem Beitrag finden Sie eine Übersicht über die verschiedenen Methoden zum Abrufen einer Root-Shell) und / oder konfigurieren, dass Siesudo
nicht zur Eingabe eines Kennworts aufgefordert werden.quelle
sudo
- es ist wie ein Gesundheitscheck.Sudo / Root wird immer dann verwendet, wenn Sie etwas tun, was ein Standardbenutzer nicht in der Lage sein sollte, das Risiko einer Beschädigung / Änderung der Systemkonfiguration in einer Weise zu tragen, die der Administrator des Systems normalerweise nicht zulässt.
Alle diese Funktionen sind technisch gesehen Verwaltungsfunktionen und können Ihr System drastisch beschädigen, wenn etwas falsch gemacht wird. In einer Unternehmensumgebung, als Sysadmin, sind dies Dinge, die ich meinem Benutzer NICHT ohne mein ausdrückliches Wissen überlassen würde, daher sudo.
Wenn beispielsweise eine Paket- / Konfigurationsdatei ohne erhöhte Berechtigungen geändert werden könnte, wäre es für eine externe Quelle äußerst einfach, einfach Remotecode auszuführen, der Ihr System beschädigen oder gefährden könnte. Indem Sie diese Aktionen dazu zwingen, Root-Zugriff zu benötigen, müssen Sie als Benutzer entscheiden, ob diese Aktionen ausgeführt werden oder nicht.
Es ist sehr ähnlich
UAC
mit Windows, es ist eigentlich, wo Windows die Idee für bekamUAC
.Das Zitat, das Sie erhalten, wenn Sie sudo zum ersten Mal verwenden, ist sehr passend und sehr wichtig:
Vor allem Nr. 2: Denken Sie nach, bevor Sie tippen. Das ist ein wichtiger Grund, warum es sudo gibt, wenn Sie einen Befehl eingeben und er "muss root sein, um diese Aktion auszuführen" zurückstößt. Er zwingt Sie, anzuhalten und darüber nachzudenken, was Sie tatsächlich tun.
quelle
Sie müssen diese Befehle als Superuser ausführen, aber nicht mit
sudo
. Sie könnten zum Beispiel stattdessensu
oderdoas
(OpenBSD-Ersatz fürsudo
) verwenden oder sich einfach als root anmelden.Wenn sie also ihre Befehle hier anzeigen, ohne
sudo
dass sie davon ausgehen, dass der Leser nur seine bevorzugte Art der Ausführung dieser Befehle als Superuser verwendet.Dies bedeutet sicherlich nicht, dass sie diese Befehle als normaler Benutzer ausführen können.
quelle
sudo -i
o.ä. verwenden, um eine Root-Shell abzurufen und anschließend die Ausführung Ihrer Root-Befehle zu starten, ohne dass Sie jedemsudo
# vi /etc/hosts
anstelle einer nicht privilegierten Eingabeaufforderung$ vi /etc/hosts
(Bash folgt der Konvention, wenn Sie\$
in verwendenPS1
)Ein Sicherheitsmerkmal von
sudo
ist, dass Sie ein System ohneroot
Kennwort haben können , sodass sich derroot
Benutzer nicht direkt anmelden kann. Dies bietet zusätzlichen Schutz für Benutzer, die schwache Kennwörter auswählen - der Angreifer, der versucht, das Kennwort brutal zu erzwingen (über SSH oder auf andere Weise), muss zuerst einen gültigen Benutzernamen ermitteln.Ein weiterer Aspekt ist eine differenziertere Rechteverwaltung. Denken Sie an
make; sudo make install
vsmake; make install
als root zu tun . Vieles kann dabei schief gehenmake
. Ein schlecht konfiguriertes Tool kann versuchen, eine wichtige Systemdatei zu überschreiben, das/lib
anstelle des aktuellen Verzeichnisses zu "säubern", den gesamten verfügbaren RAM zu verbrauchen und das System zu hängen usw. Diesmake install
ist eine kleine, einfache Aktion mit viel geringerer Wahrscheinlichkeit für einen schwerwiegenden Fehler.quelle
Der Punkt ist, dass historisch gesehen ein System wirklich von mehreren Benutzern gemeinsam genutzt werden soll, die sich nur anmelden, einige Dinge erledigen und sich dann abmelden. Also die Unterscheidung zwischen Admin und normalem User. Solche Systeme gibt es immer noch in Universitätslabors, und Sie können den Unterschied deutlich spüren, wenn Sie solche Computer verwenden. Ein Heim-PC, auf dem Sie der einzige Benutzer sind und zufällig als Administrator fungieren müssen, ist eine viel spätere Entwicklung.
quelle
Ein Computer ist ein Werkzeug. Versuchen wir eine Analogie mit einem anderen Werkzeug, sagen wir eine Bratpfanne. Manchmal muss man auf die Pfanne aufpassen. Zum Beispiel müssen Sie es mit Spülmittel reinigen. Würden Sie sagen, dass Spülmittel eine notwendige Zutat für jedes Rezept ist, für das Sie die Pfanne verwenden? Sie werden nie "Spülmittel" als Zutat in Kochbüchern finden. Es wird benötigt, aber die Vorbereitung des Werkzeugs ist eine andere Angelegenheit, daher wird es in den Kochbüchern nicht erwähnt. Die Pfanne muss gereinigt werden, aber es ist nicht das, wofür es gemacht ist.
Für Ihren Computer ist es ähnlich. Es muss konfiguriert und gepflegt werden, aber es ist nicht das, wofür es gemacht ist. Sie kümmern sich darum, Sie konfigurieren es, damit es richtig funktionieren kann. Sobald dies erledigt ist, können Sie es nicht als Systemadministrator, sondern als Benutzer verwenden. Dafür ist es gemacht. Wenn Sie ein Benutzer sind, brauchen Sie kein sudo mehr. Verwenden Sie einfach das zuvor vorbereitete Tool. Natürlich müssen Sie von Zeit zu Zeit Root-Rechte verwenden, genauso wie Sie Ihre Bratpfanne so oft reinigen müssen, wie Sie sie zum Kochen verwenden.
Ohne zu viel zu übertreiben, können wir also sagen, dass Sie niemals sudo (oder das root-Passwort) benötigen , um Ihren Computer zu benutzen. Nur um Ihren Computer vorzubereiten.
quelle
sudo
oder Sie gehen einfach zum Meisterkoch und machen einensu
.Ich wette, das liegt daran, dass Sie GUI-Software für alles außer für Systemadministrationsaufgaben verwenden oder über Linux-Server sprechen. In diesem Fall wird der meiste Zugriff natürlich über die Systemadministration erfolgen. Daher könnte es sich anfühlen, als würde man überhaupt etwas in der Shell tun müssen
sudo
.Es ist auch möglich, die Shell für Ihre täglichen Aufgaben zu verwenden. Verwalten Sie Ihre persönlichen Dateien in
~
, bearbeiten Sie Dateien, chatten Sie im IRC, kompilieren Sie Code, surfen Sie im Internet - all das ist in einer Shell möglich. Ich benutze es sogarbc
als Taschenrechner. Einige Dinge sind einfacher über eine GUI zu erledigen, andere sind einfacher über die Shell zu erledigen - selbst wenn Sie die GUI bevorzugen, ist die Shell bei Batch-Operationen und Automatisierung oft überragend (man denke an Shell-Skripte). Persönlich verwende ich das, was für die jeweilige Aufgabe am besten ist.In einigen Fällen ist es eine gute Idee, Ihr System so einzurichten, dass Sie es nicht
sudo
jedes Mal für Vorgänge verwenden müssen, für die standardmäßig Root erforderlich ist, die jedoch wahrscheinlich keine Probleme verursachen. Ein Beispiel ist, dass ich mit Hardware arbeite, bei der serielle Schnittstellen verwendet werden, und ich habe udev-Regeln eingerichtet, um als normaler Benutzer Zugriff auf die Geräte zu gewähren, ohne root sein zu müssen.Ich denke nicht, dass es eine gute Idee ist, so zu konfigurieren
sudo
, dass kein Passwort erforderlich ist. Es macht es zu einfach, Ihr gesamtes System mit einem falsch geschriebenen Befehl oder einem böswilligen Skript durcheinander zu bringen.Wenn Sie Aufgaben ausführen müssen, für die ständig root erforderlich ist, können Sie eine permanente
sudo -s
Root-Shell in einem Terminalfenster laufen lassen. Dann ist es verfügbar, ohne dass Sie das Kennwort eingeben müssen, und es ist nicht so einfach, es aus Versehen zu verwenden. Ich habe sogar meine Shell-Eingabeaufforderung so eingerichtet, dass sie in einer Root-Shell hellrot ist.quelle
Das implizite Adjektiv im Zusammenhang mit all diesen ist, dass es sich um systemweite oder globale Änderungen handelt. Sie müssen die Ursprünge von Unix als Mehrbenutzersystem 1 betrachten, bei dem mehrere Benutzer dieselbe Installation remote verwenden würden. Für einen Laien wäre es nicht sinnvoll, die globalen Einstellungen für alle Benutzer zu ändern. Es war der Sysadmin, der Root, das Privileg und die Verantwortung.
In einer Multi-User - Einstellung , die Sie mit der vorinstallierten Software und deren systemweite Konfiguration unter haben
/usr
und/etc
jeweils. Das Berühren dieser Stellen würde Root-Berechtigungen erfordern. Da die Unix-Software jedoch für mehrere Benutzer geschrieben wurde, können Sie Software unter$HOME
Verzeichnis 2 kompilieren und installieren und Ihre eigenen Konfigurationsdateien unter Ihrem Heimverzeichnis haben, in denen Sie die Dateien frei bearbeiten können, ohne ein Superuser zu sein.Zusätzlich zur Installation Ihrer eigenen Software zu Hause liest die meiste systemweite Software die benutzerspezifische Konfiguration
$HOME
direkt nach dem ersten Lesen der Konfiguration aus/etc
. Auf diese Weise können Sie fast alles anpassen, ohne jemals gehen zu müssenroot
.Mit einem Heim-PC können Sie in einer einzigen
sudo
Hauptbenutzereinstellung Ihren Weg zu den Dingen, die Ihnen gefallen, verwenden und sich darauf einlassen. Es ist jedoch üblich , die Anwendungskonfiguration nicht zu berühren,/etc
sondern zu Hause immer eine benutzerspezifische Konfiguration bereitzustellen. Auf diese Weise können Sie Ihrem Paketmanager erlauben, systemweite Konfigurationen bei Upgrades zurückzusetzen. Die systemweite Installation neuer Software ist in der Einzelbenutzereinstellung in Ordnung. Distributionspakete gehen nicht von Alternativen aus, daher ist dies ein einfacher Ausweg.Ich lasse meinen Paketmanager alles global installieren, aber alles, was aus Quellen kompiliert und selbst gemacht wurde
$HOME
. Und ich muss für nichts von alledem sudo.Wenn Sie Datendateien haben, die außerhalb Ihrer
$HOME
,chown
oder inchgrp
den Verzeichnissen Ihres Namens gespeichert sind, können Sie ohne Zugriff auf die Dateien zugreifensudo
.[1] (etwas ironisch, da Unix als Einzelbenutzerversion des Multics-Betriebssystems gedacht war)
[2] (wenn das System dies zulässt, indem keine Home-Partitionen als noexec gemountet werden)
quelle
Bei den Arten von Multi - User - Systemen , die UNIX (und durch den Abstieg, Linux) für entworfen wurde, sind diese nicht gewöhnliche Benutzer Aktionen . Möglicherweise führt ein Systemadministrator sie aus, jedoch keine typischen Benutzer. Daher fragt das System, ob der Sysadmin dies tatsächlich tun möchte.
Aber selbst in Heimsystemen für Einzelbenutzer sind dies keine gewöhnlichen Benutzeraktionen . Normalerweise muss man dies beim erstmaligen Einrichten des Systems tun, aber sobald dies abgeschlossen ist, sollte ein typischer Benutzer dies nicht mehr oft tun müssen . Die meisten typischen Benutzer bearbeiten nur Dateien in ihrem Ausgangsverzeichnis (oder dessen Unterverzeichnissen) mit bereits installierten Programmen / Paketen, und das brauchen Sie nicht
sudo
. Sie können auch in einem speziellen Verzeichnis auf dem System arbeiten, das für diesen Zweck reserviert wurde, und Sie müssensudo
das einrichten, müssen es jedoch in der Regel nur einmal.Warum spielt das eine Rolle? Weil "Einzelbenutzer" eine falsche Bezeichnung ist: Sie sind nicht der einzige Benutzer Ihres Computers, auch wenn Sie möglicherweise der einzige menschliche Benutzer sind . Selbst bei einer typischen Linux-Heiminstallation sind viele Programme so konfiguriert, dass sie den Computer auf unterschiedliche Weise verwenden. Oft simulieren sie etwas, was ein Mensch tun könnte, wenn er Zeit und Aufmerksamkeit hätte: Backups, Updates, Malware-Scans und das mögen. Meistens sind diese Verwendungszwecke völlig harmlos, aber selbst für einige von ihnen ist es immer noch ratsam, sicherzustellen, dass der Benutzer dies wirklich möchte. Und wenn diese Fälle auftauchen, dann ist es das, wofür
sudo
. Der Computer checkt nur ein, um sicherzustellen, dass Sie es wirklich sind, der das tun möchte, was jemand (vielleicht Sie, vielleicht ein Programm) gesagt hat. Dabei geht es nicht einmal um die Möglichkeit von Malware, die Sie auf keinen Fall als solche tarnen möchten.quelle
Dies ist wahrscheinlich nicht so häufig wie dargestellt, tritt jedoch normalerweise dann auf, wenn ein gelegentlicher interner Aufruf eines viel allgemeineren privilegierten Systems erforderlich ist, um das Ergebnis zu erzielen. Beispiel:
umount
ist ein ernstzunehmender Befehl, da man damit viele Dinge abhängen kann.ifup
usw.) ist nur für Superuser.Die Systeme werden im Allgemeinen weiterentwickelt, um die Anzahl solcher Fälle zu verringern. USB-Sticks können jetzt vom Benutzer montiert werden und Netzwerke können vom Benutzer verbunden werden. Das war aber nicht immer so.
quelle
Annahme: Dies ist Ihr System und Ihre Daten.
Sie müssen nur das Risiko
sudo
abwägen, versehentlich Daten zu löschen oder Ihr Betriebssystem zu beschädigen, im Vergleich zu der Leichtigkeit, Dinge zu erledigen, ohne sie jedes Mal eingeben zu müssen.Ich melde mich routinemäßig an und arbeite als root auf meinen Heimservern, weil
ich kannes ist einfacher.Ihnen wird gesagt, dass Sie möglicherweise Atomwaffen abschießen, wenn Sie nicht durch den Heiligen gehen,
sudo
aber die Realität sieht so aus, dass die Menschen heuteroot
auf vielen Geräten (Ihrem Fernseher, Ihrem Telefon, Ihrem Toaster, Ihrem Windows (as)) Kräfte (*) haben du erwähntest)). Linux ist hier nicht anders, obwohl viele gerne anders denken.BTW
UAC
wurde nicht als Vorbild herangezogen,sudo
da seine männliche Rolle (abgesehen davon, dass Ihr Leben miserabel wird) darin besteht, sicherzustellen, dass Sie sehen, wann Malware Dinge in Ihrem Namen tun möchte.(*)
root
Kräfte sind definiert als die Fähigkeit, wichtige Daten zu zerstören. Das Sprichwort "mit großer Macht kommen große Probleme" (oder was auch immer das war) gilt.Wenn meine Annahme falsch ist, müssen Sie das obige Risiko trotzdem gewichten, aber es gibt weitere Variablen (Ihren Job, Fotos, die von Ihrem Ehepartner aufgenommen und auf demselben Laptop gespeichert wurden, ...)
quelle
rm -rf ~/
ohne besondere Erlaubnis. Auf der anderen Seite können Sie Ihr Mobiltelefon oder Ihren Fernseher nicht ausgemauert haben, ohne ihn vorher zu rollen.Zur Verteidigung der Person, die die erste Frage geschrieben hat, hatte ich in den vergangenen Jahren die gleiche Frage, aber ich verfolgte einen anderen Ansatz.
Die meisten Antworten könnten hier einfach in einer Schleife abgespielt werden, da sie alle den gleichen Punkt in Bezug auf Sudo und Root betonen. Lassen Sie mich diesem Thema eine andere Perspektive hinzufügen:
Die Art und Weise, wie ich Unix UND Linux von Grund auf lernte, war, einen meiner Computer als "Versuchskaninchen" zu benutzen. Ich würde SCO Linux und später Solaris und später Linux installieren und die ganze Zeit freudig als Root experimentieren, um die Verzeichnishierarchie und alle Dateien mit uneingeschränktem Zugriff zu lesen und / oder zu durchsuchen und auch "normale Benutzer" -Konten bei mir zu erstellen -gewachsene Multi-User-Box, obwohl ich der einzige Benutzer war. Und ich bin froh, dass ich das so gemacht habe. Ich habe so viel über die "Unix-Philosophie" und die Art und Weise gelernt, wie Unix für meine Experimente verwendet werden sollte.
Ich hatte eine Menge Spaß beim Erlernen der Sicherheit und beim Ausführen gefährlicher Befehle, indem ich in einem Terminal rm -rf / * als root eingab. (TUN SIE DAS NICHT! ES SCHLÄUCHT IHR SYSTEM AUS !!) Ich habe solche und viele andere Befehle ausgeführt, nur um zu sehen, was in Echtzeit passieren würde. Ich habe solche Dinge getan, um die Konsequenzen vorher zu kennen, aber ich habe trotzdem viel gelernt, indem ich das getan habe. Ich habe SCO Unix LONG verwendet, bevor es das Web überhaupt gab (ja, ich bin so alt!), Und das Experimentieren auf diese Weise war für mein Lernen von unschätzbarem Wert.
Also, was ich sage ist, wenn es Ihnen nichts ausmacht, Neuinstallationen durchzuführen, wenn etwas schief geht, verwenden Sie su oder melden Sie sich als root an und konfigurieren / hacken Sie sich! Sie werden verdammt viel lernen, wenn Sie das tun.
Denken Sie daran, dass der Rat, der hier häufig wiederholt wurde, aus einem guten Grund wiederholt wurde: Die Best-Practice-Protokolle haben sich im Laufe der Jahrzehnte mit der Entwicklung von compsec weiterentwickelt, und Sie MÜSSEN darauf achten, auch als Privatanwender / einzelner Benutzer Ihres Systems . Auf diese Weise werden gute Hygiene- / Gewohnheiten des Systemadministrators für Sie zur zweiten Natur.
Nur ein paar Denkanstöße zum Thema su und sudo. Viel Spaß beim Hacken!
quelle