14. März 2019 BITTE BEACHTEN SIE: Dieser Wiki-Artikel wird erheblich umgeschrieben, da er eine Menge altes, veraltetes und möglicherweise fragwürdiges Material enthält. Es wird dringend empfohlen, Vorsicht walten zu lassen und sich in den Ubuntu-Foren oder bei Ask Ubuntu zu informieren! |
Hinweis: Hilfe zur Konfiguration der sudo-Rechte über die Konfigurationsdatei /etc/sudoers finden Sie unter Sudoers.
Hintergrundinformationen
In Linux (und Unix im Allgemeinen) gibt es einen SuperUser namens root. Das Windows-Äquivalent von root ist die Gruppe Administrators. Der SuperUser kann alles und jeden machen, und so kann die tägliche Arbeit als SuperUser gefährlich sein. Sie könnten einen Befehl falsch eingeben und das System zerstören. Idealerweise führen Sie die Arbeit als Benutzer aus, der nur die für die jeweilige Aufgabe erforderlichen Berechtigungen hat. In manchen Fällen ist das notwendigerweise root, aber meistens ist es ein normaler Benutzer.
Standardmäßig ist das Passwort für das root-Konto in Ubuntu gesperrt. Das bedeutet, dass Sie sich nicht direkt als root anmelden oder den su-Befehl verwenden können, um der root-Benutzer zu werden. Da das root-Konto jedoch physisch existiert, ist es dennoch möglich, Programme mit root-Rechten auszuführen. Hier kommt sudo ins Spiel – es erlaubt autorisierten Benutzern (normalerweise „Administrative“ Benutzer; weitere Informationen finden Sie im AddUsersHowto), bestimmte Programme als root auszuführen, ohne das root-Passwort kennen zu müssen.
Das bedeutet, dass Sie im Terminal sudo für Befehle verwenden sollten, die root-Rechte erfordern; stellen Sie einfach allen Befehlen, die Sie als root ausführen müssen, sudo voran. Ausführlichere Anwendungsbeispiele finden Sie weiter unten. Ähnlich verhält es sich, wenn Sie GUI-Programme ausführen, die Root-Rechte erfordern (z. B. das Netzwerkkonfigurations-Applet), verwenden Sie das grafische sudo, und Sie werden ebenfalls zur Eingabe eines Passworts aufgefordert (mehr dazu weiter unten). Denken Sie nur daran, dass sudo, wenn es nach einem Passwort fragt, IHR BENUTZER-Passwort benötigt und nicht das Passwort des Root-Kontos.
Bitte bedenken Sie, dass eine beträchtliche Anzahl von Ubuntu-Benutzern neu in Linux ist. Es gibt eine Lernkurve, die mit jedem Betriebssystem verbunden ist, und viele neue Benutzer versuchen, Abkürzungen zu nehmen, indem sie das Root-Konto aktivieren, sich als Root anmelden und den Besitz von Systemdateien ändern.
Beispiel: Kaputtes System durch (Missbrauch) von root durch einen neuen Benutzer
Bitte beachten Sie: Zum Zeitpunkt des Beitrags war dies der erste Beitrag des Benutzers in den Ubuntu-Foren. Während einige dies als „Lernerfahrung“ bezeichnen mögen, ist das Lernen durch das Zerstören Ihres Systems frustrierend und kann zu Datenverlust führen.
Wenn Sie in den Ubuntu-Foren und im IRC Ratschläge geben, nehmen Sie sich bitte die Zeit, „die Grundlagen“ wie Besitzverhältnisse, Rechte und die Verwendung von sudo / gksu / kdesudo so zu vermitteln, dass neue Benutzer keine Systeme zerstören.
Vor- und Nachteile
Vorteile der Verwendung von sudo
Es gibt eine Reihe von Vorteilen, wenn Ubuntu die Root-Anmeldung standardmäßig deaktiviert lässt, darunter:
- Das Installationsprogramm hat weniger Fragen zu stellen.
- Benutzer müssen sich kein zusätzliches Passwort für den gelegentlichen Gebrauch merken (d.h. das Root-Passwort). Wenn sie das täten, würden sie es wahrscheinlich vergessen (oder es auf unsichere Weise aufzeichnen, so dass jeder leicht in ihr System eindringen könnte).
-
Es vermeidet standardmäßig die interaktive Anmeldung „Ich kann alles“. Sie werden zur Eingabe eines Passworts aufgefordert, bevor größere Änderungen vorgenommen werden können, was Sie zum Nachdenken über die Konsequenzen Ihres Tuns anregen sollte.
-
sudo fügt einen Protokolleintrag des/der ausgeführten Kommandos hinzu (in /var/log/auth.log). Wenn Sie Mist bauen, können Sie zurückgehen und sehen, welche Befehle ausgeführt wurden.
-
Auf einem Server weiß jeder Cracker, der versucht, sich mit Brute-Force Zugang zu verschaffen, dass es ein Konto namens root gibt, und wird es zuerst damit versuchen. Was er nicht weiß, ist, wie die Benutzernamen der anderen Benutzer lauten. Da das Passwort des Root-Kontos gesperrt ist, wird dieser Angriff im Grunde bedeutungslos, da es kein Passwort gibt, das man knacken oder erraten könnte.
- Ermöglicht einen einfachen Transfer für Admin-Rechte durch Hinzufügen und Entfernen von Benutzern aus Gruppen. Wenn Sie ein einziges Root-Passwort verwenden, besteht die einzige Möglichkeit, Benutzern die Berechtigung zu entziehen, darin, das Root-Passwort zu ändern.
- sudo kann mit einer viel feinkörnigeren Sicherheitsrichtlinie eingerichtet werden.
- Das Passwort des Root-Kontos muss nicht mit jedem geteilt werden, der irgendeine Art von administrativer Aufgabe(n) auf dem System durchführen muss (siehe den vorherigen Punkt).
- Die Authentifizierung läuft automatisch nach einer kurzen Zeit ab (die auf beliebig wenig oder 0 eingestellt werden kann); wenn Sie also das Terminal verlassen, nachdem Sie Befehle als root mit sudo ausgeführt haben, lassen Sie nicht auf unbestimmte Zeit ein root-Terminal offen.
Nachteile der Verwendung von sudo
Obwohl für Desktops die Vorteile der Verwendung von sudo groß sind, gibt es mögliche Probleme, die beachtet werden müssen:
-
Die Umleitung der Ausgabe von Befehlen, die mit sudo ausgeführt werden, erfordert einen anderen Ansatz. Betrachten Sie zum Beispiel sudo ls > /root/somefile wird nicht funktionieren, da es die Shell ist, die versucht, in diese Datei zu schreiben. Sie können ls | sudo tee -a /root/somefile verwenden, um anzuhängen, oder ls | sudo tee /root/somefile, um den Inhalt zu überschreiben. Sie könnten auch den gesamten Befehl an einen Shell-Prozess übergeben, der unter sudo ausgeführt wird, um die Datei mit Root-Rechten zu schreiben, z. B. sudo sh -c „ls > /root/somefile“.
- In vielen Büroumgebungen ist der EINZIGE lokale Benutzer auf einem System root. Alle anderen Benutzer werden mit NSS-Techniken wie nss-ldap importiert. Um eine Workstation einzurichten oder im Falle eines Netzwerkausfalls, bei dem nss-ldap defekt ist, zu reparieren, wird root benötigt. Dies führt dazu, dass das System unbrauchbar wird, wenn es nicht geknackt wird. Hier wird ein zusätzlicher lokaler Benutzer oder ein aktiviertes root-Passwort benötigt. Das lokale Benutzerkonto sollte sein $HOME auf einer lokalen Platte haben, _nicht_ auf NFS (oder einem anderen vernetzten Dateisystem), und eine .profile/.bashrc, die keine Dateien auf NFS-Mounts referenziert. Dies ist normalerweise für root der Fall, aber wenn Sie ein Nicht-Root-Rescue-Konto hinzufügen, müssen Sie diese Vorkehrungen manuell treffen. Der Vorteil der Verwendung eines lokalen Benutzers mit sudo ist jedoch, dass Befehle leicht nachverfolgt werden können, wie in den Vorteilen oben erwähnt.
Benutzung
- Bei der Verwendung von sudo wird Ihr Passwort standardmäßig für 15 Minuten gespeichert. Nach dieser Zeit müssen Sie Ihr Passwort erneut eingeben.
-
Ihr Passwort wird nicht auf dem Bildschirm angezeigt, während Sie es eingeben, auch nicht als eine Reihe von Sternen (******). Es wird mit jedem Tastendruck eingegeben!
sudo
Um sudo auf der Kommandozeile zu verwenden, stellen Sie dem Befehl sudo voran, wie unten: Beispiel #1
sudo chown bob:bob /home/bob/*
Beispiel #2
sudo /etc/init.d/networking restart
Um den zuletzt eingegebenen Befehl zu wiederholen, nur mit vorangestelltem sudo, führen Sie aus:
sudo !!
Grafisches sudo
Sie sollten niemals das normale sudo verwenden, um grafische Anwendungen als root zu starten. Die Verwendung von sudo mit grafischen Anwendungen hat das Potenzial, Ihre Umgebung zu korrumpieren, indem es root erlaubt, den Besitz von kritischen Dateien zu übernehmen und/oder deren Berechtigungen zu ändern, die Sie besitzen müssen. In den Foren finden sich häufig panische Hilfeanfragen von Benutzern, die sich nicht mehr anmelden können, nachdem sie grafische Anwendungen unter sudo gestartet haben.
Bitte beachten Sie, dass viele Websites und alte Threads die Verwendung von gksu empfehlen. Solche Suchergebnisse sind jedoch veraltet. gksudo wurde seit Jahren nicht mehr aktualisiert und ist in Bionic (18.04) und höher nicht mehr verfügbar. gksu wurde durch pkexec ersetzt, aber selbst pkexec wird von den Mainline-Ubuntu-Entwicklern veraltet. Sie haben die Position eingenommen, dass die Dateimanipulation und -bearbeitung unter Root auf die Kommandozeile beschränkt sein sollte.
Was die Beweggründe für diese Entscheidung sind, können wir nur vermuten: Vielleicht gibt es einfach zu viele Benutzer, die Probleme haben, grafische Anwendungen als Root auszuführen. In jedem Fall erfordert das Ausführen von grafischen Anwendungen als Root nun Workarounds und zusätzliche Schritte.
Flavour-spezifische Workarounds
Es gibt eine Reihe von Flavour-spezifischen Optionen, um grafische Anwendungen als Root auszuführen:
-
Sie können pkexec auf denjenigen Flavours verwenden, die diese Option unterstützen. Ab 18.04 unterstützt nur Xubuntu diese Option standardmäßig, wie die folgenden Beispiele zeigen:
-
pkexec thunarpkexec mousepad /etc/fstab
-
-
Standardmäßig erlaubt Kubuntu den einfachen Zugriff auf einen Root-Dateimanager: KDE Launcher → Computer → Root-Dolphin
-
Von dort aus: (→ Datei bearbeiten) wird eine Root-Instanz von Kate geöffnet.
-
-
Mainline Ubuntu und Gnome verwenden Nautilus als Dateimanager. In jeder Geschmacksrichtung, in der Nautilus läuft, können Sie das Paket nautilus-admin installieren, das zwei Python-Erweiterungen zu Nautilus hinzufügt. Diese Erweiterungen fügen Optionen hinzu, die den Root-Zugriff ermöglichen: Als Administrator öffnen und Als Administrator bearbeiten
-
Es ist auch möglich, die fehlenden Policykit-Dateien sowohl für Nautilus als auch für Gedit zu installieren. Auf dieser Seite finden Sie Anleitungen und Links. Ein kundiger Benutzer könnte weitere Policykit-Dateien für alternative Dateimanager und Editoren erstellen, indem er die verlinkten Dateien als Vorlagen verwendet. Es handelt sich um einfache XML-Dateien, die mit einem Standard-Texteditor bearbeitet werden können.
-
Allgemeine Umgehungsmöglichkeiten
Die folgenden Methoden funktionieren bei allen Flavours:
- Verwenden Sie die Kommandozeile. Einfache Texteditoren wie nano sind recht einfach zu erlernen. Wenn Sie einen quasi-grafischen Dateimanager bevorzugen, installieren Sie Midnight Commander. Beide Programme laufen problemlos unter sudo. Beispiele:
-
sudo mcsudo nano /etc/fstab
-
-
Ungeachtet der früheren Warnung ist es möglich, sudo mit grafischen Anwendungen zu verwenden, sofern Sie das Flag -H hinzufügen. Dieses Flag ist entscheidend: Es setzt root korrekt auf seine eigene Umgebung, anstatt die Umgebung des Benutzers zu erben. Die Verwendung des Flags -H ist obligatorisch. Wenn Sie dieses Flag nicht verwenden, können wichtige Systemdateien beschädigt werden und Sie können sich nicht mehr anmelden.
-
Mit sudo -H kann fast jede grafische Anwendung unter root in jeder ‚buntu-Variante gestartet werden. Dies schließt den Standard-Grafikeditor und den Dateimanager jedes Flavours ein.
Eine nennenswerte Gefahr bei sudo -H ist, dass das -H-Flag leicht vergessen werden kann. Und es braucht nur eine Auslassung, um den Schaden zu verursachen.
-
Benutzer
anderen Benutzern die Ausführung von sudo erlauben
Um einen neuen Benutzer zu sudo hinzuzufügen, öffnen Sie das Fenster Einstellungen, dann das Menü Details → Benutzer. Klicken Sie zunächst auf Freischalten, dann können Sie einen Benutzer auswählen und auf Administrator klicken.
Im Terminal (für Precise Pangolin, 12.04) würde das lauten:
sudo adduser <username> sudo
wobei Sie <Benutzername> durch den Namen des Benutzers ersetzen (ohne das <>).
In früheren Ubuntu-Versionen
sudo adduser <username> admin
wäre das angebracht gewesen, aber die Admin-Gruppe ist veraltet und existiert in Ubuntu 12.04 nicht mehr.
Anmelden als ein anderer Benutzer
Bitte verwenden Sie dies nicht, um Root zu werden, siehe weiter unten auf der Seite für weitere Informationen dazu.
sudo -i -u <username>
Zum Beispiel, um für die Bandverwaltung der Benutzer amanda zu werden.
sudo -i -u amanda
Das Passwort, nach dem gefragt wird, ist Ihr eigenes, nicht das von amanda.
Root-Konto
Aktivieren des Root-Kontos
Das Aktivieren des Root-Kontos ist selten notwendig. Fast alles, was Sie als Administrator eines Ubuntu-Systems tun müssen, kann über sudo oder gksudo erledigt werden. Wenn Sie wirklich einen dauerhaften Root-Login benötigen, ist die beste Alternative, eine Root-Login-Shell mit dem folgenden Befehl zu simulieren… |
sudo -i
Um das Root-Konto zu aktivieren (d.h. ein Passwort zu setzen), verwenden Sie:
sudo passwd root
Verwendung auf eigene Gefahr!
Einloggen in X als Root kann sehr ernsthafte Probleme verursachen. Wenn Sie glauben, dass Sie ein Root-Konto benötigen, um eine bestimmte Aktion durchzuführen, wenden Sie sich bitte zuerst an die offiziellen Support-Kanäle, um sicherzustellen, dass es keine bessere Alternative gibt. |
Re-.Deaktivieren des Root-Kontos
Wenn Sie aus irgendeinem Grund Ihr Root-Konto aktiviert haben und es wieder deaktivieren möchten, verwenden Sie den folgenden Befehl im Terminal… |
sudo passwd -dl root
Weitere Informationen
Missverständnisse
-
Ist sudo nicht unsicherer als su?
-
Das grundsätzliche Sicherheitsmodell ist das gleiche, und deshalb haben diese beiden Systeme die gleichen primären Schwachstellen. Jeder Benutzer, der su oder sudo verwendet, muss als privilegierter Benutzer angesehen werden. Wenn das Konto dieses Benutzers von einem Angreifer kompromittiert wird, kann der Angreifer beim nächsten Mal auch Root-Rechte erlangen. Das Benutzerkonto ist das schwache Glied in dieser Kette und muss daher mit der gleichen Sorgfalt geschützt werden wie root.
Auf einer esoterischeren Ebene bietet sudo einige Funktionen, die andere Arbeitsgewohnheiten fördern, was sich positiv auf die Sicherheit des Systems auswirken kann. sudo wird üblicherweise verwendet, um nur einen einzigen Befehl auszuführen, während su im Allgemeinen verwendet wird, um eine Shell zu öffnen und mehrere Befehle auszuführen. Der sudo-Ansatz verringert die Wahrscheinlichkeit, dass eine Root-Shell auf unbestimmte Zeit offen gelassen wird, und ermutigt den Benutzer, die Verwendung von Root-Rechten zu minimieren.
-
-
Ich kann nicht in den Einzelbenutzermodus wechseln!
- Das sulogin-Programm in Ubuntu wurde gepatcht, um den Standardfall eines gesperrten root-Passworts zu behandeln.
-
Ich kann eine Root-Shell über die Konsole aufrufen, ohne ein Passwort einzugeben!
- Sie müssen Ihr Passwort eingeben.
Konsolenbenutzer haben Zugriff auf den Bootloader und können während des Bootvorgangs auf verschiedene Weise administrative Rechte erlangen. Zum Beispiel durch die Angabe eines alternativen init(8)-Programms. Linux-Systeme sind in der Regel nicht so konfiguriert, dass sie auf der Konsole sicher sind, und es sind zusätzliche Schritte (z. B. das Setzen eines Root-Passworts, eines Bootloader-Passworts und eines BIOS-Passworts) erforderlich, um sie sicher zu machen. Beachten Sie, dass Konsolenbenutzer in der Regel physischen Zugriff auf den Rechner haben und ihn daher auch auf andere Weise manipulieren können.
- Sie müssen Ihr Passwort eingeben.
Spezielle Hinweise zu sudo und Shells
Keine der folgenden Methoden wird von den Entwicklern von Ubuntu vorgeschlagen oder unterstützt.
Bitte schlagen Sie dies nicht vor, es sei denn, Sie stehen persönlich rund um die Uhr zur Verfügung, um den Benutzer zu unterstützen, wenn er Probleme hat, weil er eine Shell als Root gestartet hat.
Um eine Root-Shell (d. h. ein Befehlsfenster, in dem Sie Root-Befehle ausführen können) zu starten und die Root-Umgebung und Anmeldeskripte zu starten, verwenden Sie:
sudo -i (similar to sudo su - , gives you roots environment configuration)
Um eine Root-Shell zu starten, aber die Umgebung der aktuellen Shell zu behalten, verwenden Sie:
sudo -s (similar to sudo su)
Für einen kurzen Überblick über einige der Unterschiede zwischen su, su – und sudo -{i,s} siehe: Ubuntu-Foren-Beitrag mit schöner Tabelle.
Zusammenfassung der gefundenen Unterschiede –
corrupted by user's HOME=/root uses root's PATH env varssudo -i Y Y Nsudo -s N Y Ysudo bash N Y Ysudo su Y N Y PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games probably set by /etc/environment PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Für eine detaillierte Beschreibung der Unterschiede siehe man su und man sudo .
Passwortabfrage für sudo entfernen
Wenn Sie das sudo-Passwort für Ihr Konto deaktivieren, gefährden Sie ernsthaft die Sicherheit Ihres Computers. Jeder, der an Ihrem unbeaufsichtigten, eingeloggten Konto sitzt, hat vollständigen Root-Zugriff, und Remote-Exploits werden für böswillige Cracker viel einfacher. |
-
Diese Methode wird von den Entwicklern von Ubuntu weder vorgeschlagen noch unterstützt.
- Bitte schlagen Sie diese Methode nicht vor, es sei denn, Sie sind persönlich rund um die Uhr verfügbar, um den Benutzer zu unterstützen, wenn er Probleme hat, weil er eine Shell als Root laufen lässt.
Mit dieser Anleitung wird die Aufforderung zur Eingabe eines Passworts bei Verwendung des sudo-Befehls entfernt. Der sudo-Befehl muss aber weiterhin für den Root-Zugriff verwendet werden.
Bearbeiten Sie die Datei sudoers
Öffnen Sie ein Terminalfenster. Geben Sie sudo visudo ein. Fügen Sie die folgende Zeile am ENDE der Datei ein (wenn sie nicht am Ende steht, kann sie durch spätere Einträge aufgehoben werden):
<username> ALL=NOPASSWD: ALL
Ersetzen Sie <username> durch Ihren Benutzernamen (ohne das <>). Dies setzt voraus, dass Ubuntu eine Gruppe mit demselben Namen wie Ihr Benutzername angelegt hat, was typisch ist. Sie können alternativ die Gruppe users oder eine andere solche Gruppe verwenden, in der Sie sich befinden. Stellen Sie nur sicher, dass Sie in dieser Gruppe sind. Dies können Sie unter System->Verwaltung->Benutzer und Gruppen überprüfen
Beispiel:
michael ALL=NOPASSWD: ALL
Geben Sie zum Beenden ^x ein. Es sollte eine Option zum Speichern der Datei angezeigt werden, geben Sie Y zum Speichern ein.
Melden Sie sich ab und dann wieder an. Jetzt sollten Sie den sudo-Befehl ausführen können, ohne nach einem Passwort gefragt zu werden.
Oder um dies für die systemweite Gruppe sudo zu tun
root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Melden Sie sich ab, und dann wieder an.
Reset sudo timeout
Sie können sicherstellen, dass sudo beim nächsten Mal nach dem Passwort fragt, indem Sie es ausführen:
sudo -k
Die Standardlänge des sudo-Timeouts kann mit diesem Artikel geändert werden: RootSudoTimeout.