Ich habe kürzlich OpenBSD 4.9 auf meinem Computer installiert, damit ich etwas über Unix-ähnliche Betriebssysteme lernen kann. Ich habe dem System einen neuen Benutzer namens bruno hinzugefügt. OK. Wenn ich den Befehl 'sudo' verwende, werde ich nach einem Passwort gefragt. Also gebe ich das Passwort ein. Aber es sagt mir immer wieder, dass das Passwort falsch ist, obwohl ich sicher bin, dass das Passwort korrekt ist. Was fehlt mir hier? Ich weiß, wenn hinzufügen
bruno ALL = (ALL) NOPASSWD: ALL
In der Datei / etc / sudoers wird nicht mehr nach dem Kennwort gefragt, und ich kann den Befehl sudo ausführen. Was soll ich hier machen? Was ist die korrekteste / sicherste Option? Es tut mir leid, wenn es eine triviale Frage ist. Ich konnte keine gute Erklärung für dieses Problem finden. Ich suche nicht nur nach Lösungen, sondern auch nach Erklärungen, wie diese ganze Sache mit Benutzern / Berechtigungen / Passwörtern funktioniert.
sudo
Benutzer verwendet werden können, die das Root-Passwort nicht kennen . Beispielsweise kann der Systembesitzer bestimmten Benutzern die Berechtigung erteilen, bestimmte Befehle auszuführen, ohne ihnen den vollständigen Root-Zugriff zu gewähren. (Es verringert auch die Gefährdung des Root-Passworts durch Keylogger und das Surfen auf der Schulter.) Die Unwissenheit, die Sie beklagen, kann durch Beantwortung der Frage behoben werden. siehe unten.sudo
verwendet werden kann (es ist ein sehr nützliches Tool!) - es geht darum, wie es standardmäßig in Distributionen wie Ubuntu eingerichtet wird . Unwissenheit kann und sollte natürlich geheilt werden (dies ist teilweise der Zweck dieser Website). Das Problem ist, welche gefährlichen Trends die Standardkonfigurationsudo
erzeugt.Antworten:
Dies ist ein Beispiel für den Unterschied zwischen Authentifizierung und Autorisierung .
Sudo ist in erster Linie ein Werkzeug zur Autorisierung. Seine Aufgabe besteht darin, zu bestimmen, ob Sie einen Befehl mit erhöhten Berechtigungen ausführen dürfen, und diesen Befehl gegebenenfalls auszuführen. Ein Eintrag wie
In der
sudoers
Datei kann der Benutzerbruno
jeden Befehl mit beliebigen Berechtigungen ausführen.Um diese Regel anzuwenden, muss Sudo wissen, dass der Benutzer, der sie aufruft, dies tatsächlich ist
bruno
. Im Prinzip kann es sich auf den Authentifizierungsmechanismus des Systems stützen: Wenn Sie Befehle als ausführen könnenbruno
, bedeutet dies, dass Sie sich bereits als authentifiziert habenbruno
. Da die Verwendung von Sudo jedoch schwerwiegende Folgen haben kann, erfordert Sudo eine zusätzliche Authentifizierung: Manchmal müssen Sie Ihr Kennwort erneut eingeben. Dies bedeutet, dass ein Passant, der Ihre Konsole unbeaufsichtigt gelassen hat und den Befehl ausführenbruno
kann, Sudo nicht verwenden kann. Er kann möglicherweise Ihr Konto beschädigen, nicht jedoch den Rest des Systems.Ein weiterer Vorteil der Anforderung eines Passworts besteht darin, dass Sie benachrichtigt werden, dass etwas Ungewöhnliches passiert. Beispielsweise kann eine Anwendung nicht stillschweigend anrufen
sudo
: Sie müsste nach Ihrem Kennwort gefragt werden, und eine unerwartete Kennwortabfrage würde Sie darauf hinweisen, dass etwas Schlimmes passiert.In der Praxis wäre es ärgerlich, jedes Mal, wenn Sie Sudo ausführen, nach einem Passwort zu fragen. Daher ist das Standardverhalten ein Kompromiss: Fragen Sie alle paar Minuten nach einem Passwort. Auf diese Weise kann ein Passant oder eine Anwendung Schaden anrichten,
sudo
wenn sie nur ausgeführt wird, wenn Sie dies in den letzten Minuten getan haben.quelle
Sie sollten das Handbuch lesen:
man sudo
(Auch hier ), und ich bin nicht sicher, wie die Regeln lauten, aber auf den meisten Unix-Systemen ist sudo nur von Benutzern in derwheel
Gruppe zulässig . Sie sollten also entweder eine Regel für diesen neuen Benutzer festlegen, für die das Kennwort erforderlich ist, oder Sie fügen den Benutzer der Radgruppe hinzu. (Verwendungusermod -a -G wheel bruno
)quelle
wheel
Gruppe sein muss, ist bei einigen Unix-Varianten (jedoch nicht unter Linux) für üblichsu
. Sudo wird nichtwheel
als etwas Besonderes behandelt . Eine Zeile mit%wheel ALL=(ALL) ALL
insudoers
würde die traditionelle Radrichtlinie implementieren, ist jedoch nicht Teil der Standardkonfiguration.