staging.inyokaproject.org

mit Root-Rechten arbeiten

Achtung!

Dieser Artikel wird aktuell in Baustelle/mit Root-Rechten arbeiten überarbeitet. Daher kann es sein, dass diese Seite hier veraltete oder nicht (mehr) zutreffende Informationen enthält. Vergleiche beide Versionen und wende dich im Zweifelsfall mit deinem konkreten Anliegen an das Support-Forum. Änderungen am Artikel bitte nur in Baustelle/mit Root-Rechten arbeiten!

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

"Mit Root-Rechten arbeiten" bedeutet, dass man mit vollen administrativen Rechten auf dem System arbeitet. Wer mit Rootrechten arbeitet kann z.B. alle Dateien öffnen und lesen, Datei- und Verzeichnisrechte ändern, Systemdateien editieren, usw. Eine allgemeine Erklärung zu "root" ist im Wikiartikel root zu finden.

Ein typischer Anwendungsfall zum Arbeiten mit Root-Rechten ist z.B. das systemweite Installieren von Paketen aus den Paketquellen. Ein weiterer typischer Anwendungsfall ist das Editieren von Systemdateien, z.B. zur Änderung der Konfiguration einer Systemkomponente oder eines Systemdienstes.

Standardmäßig arbeitet kein Benutzer unter Ubuntu und dessen Derivaten mit Rootrechten. Um überhaupt mit Rootrechten arbeiten zu können, muss man als Benutzer Mitglied der Gruppe sudo sein. Das ist standardmäßig der erste angelegte Nutzer des Systems. Wie man weitere Nutzer zum Mitglied der Gruppe sudo macht - und damit mit Rootrechten ausstattet - ist im Artikel Administrator beschrieben.

Des Weiteren muss man, um mit Rootrechten zu arbeiten, den Programmaufruf etwas anders durchführen. Dazu gibt es fünf verschiedene, mögliche Wege. Zwei Wege, nämlich der Einsatz von sudo und pkexec funktionieren universell unter allen unterstützen Ubuntuversionen.

Achtung!

Erweiterte Rechte mittels der hier beschriebenen Verfahren sollten nur verwendet werden, wenn eine Aufgabe dies wirklich erfordert, die Programmausführung also zum Beispiel mit Rootrechten erfolgen muss. Änderungen an Systemdateien sollte man mit Bedacht vornehmen und vorher eine Sicherungskopie anlegen. Eine falsche Verwendung von Rootrechten kann das System im schlechtesten Fall unbrauchbar machen.

sudo, pkexec und sudoedit

Der Einsatz von sudo und pkexec ermöglicht es, Programme und Befehle mit Rootrechten auszuführen. Dazu wird einer der beiden Befehle einfach dem aufzurufenden Programm bzw. Befehl vorangestellt. sudoedit dient zum Editieren von Dateien mit Rootrechten.

sudo

sudo ist der "klassische" Linux-Weg, um mit Rootrechten zu arbeiten. Der Befehl sudo wird einfach vorangestellt. Beim Ausführen von Programmen sollte sicherheitshalber sudo immer mit der Option -H aufgerufen werden. Damit wird die Umgebungsvariable HOME (nicht aber PWD und nicht das Arbeitsverzeichnis selbst) bei der Ausführung auf /root gesetzt und es wird erschwert, dass eventuell Konfigurationsdateien im Homeverzeichnis des Benutzers überschrieben werden. Zur Ausführung von Befehlen ist dies nicht nötig. Mit sudo können sowohl Programme im Terminal als auch Programme mit grafischer Oberfläche ausgeführt werden.

Achtung!

Nach dem Aufruf eines Programms mit grafischer Oberfläche mit sudo oder auch sudo -H kann der Desktop unbenutzbar werden, weil von sudo Dateirechte im Home-Verzeichnis des Benutzers verändert werden.

Der Verwendung von sudo mit Programmen mit grafischer Oberfläche wird dringend widerraten!

Beispiele[1]:

sudo nano   # öffnet den Editor nano im Terminal mit Rootrechten
sudo cp /var/log/foo.log /var/log/foo.old   # kopiert eine Datei im Verzeichnis /var/log
sudo apt update   # aktualisiert die Liste der Pakte in den Paketquellen 

Weitere Informationen zu sudo, inklusive einer weiterführenden Informationen, warum die Option -H sinnvoll ist, den sonstigen Möglichkeiten und der Konfiguration des Befehl sind im Wikiartikel sudo zu finden.

sudoedit

Werden Rootrechte zum Editieren einer Datei benötigt kann der Befehl sudoedit genutzt werden. Beispiel:

sudoedit /etc/irgendwo/irgendwas.conf 

Als Editor wird standardmäßig Nano verwendet. Im Artikel sudo (Abschnitt „Editieren-von-Dateien-unter-Sudo-Rechten-sudoedit“) wird erklärt, wie man einen anderen Editor konfiguriert; dabei kann man auch einen GUI-Editor gefahrlos einsetzen.

Eine Alternative zu sudoedit ist die Verwendung des admin://-Protokolls.

pkexec

pkexec ist die "modernere" Variante zum Ausführen von Programmen und Befehlen mit Root-Rechten. pkexec ist Teil von PolicyKit, welches eine feinere Verteilung der Rechte erlaubt. Der Befehl pkexec wird einfach vorangestellt:

pkexec nano   # öffnet den Editor nano im Terminal mit Root-Rechten
pkexec cp /var/log/foo.log /var/log/foo.old   # kopiert eine Datei im Verzeichnis /var/log
pkexec apt update   # aktualisiert die Liste der Pakte in den Paketquellen 

Um mittels pkexec Programme mit grafischer Oberfläche auszuführen, muss man entweder eine Aktionsdatei für PolicyKit erstellen oder den folgenden Aufruf verwenden:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY PROGRAMMNAME 

wobei PROGRAMMNAME durch den entsprechenden Namens des Programms / Befehls ersetzt werden muss.

Weiterführende Informationen zu pkexec, zu PolicyKit, zum Erstellen sowie Anzeigen von Aktionsdateien sind im Wikiartikel PolicyKit zu finden.

Dateien mit dem GVFS admin:// Protokoll öffnen

Ubuntu bzw. Derivate, die das Gnome Virtual File System 🇬🇧 (kurz: GVFS) verwenden, können seit 17.04 admin:// zum Öffnen bzw. Editieren von Dateien nutzen. So würde der Aufruf

gedit admin:///etc/irgendwo/irgendwas.conf 

die Datei /etc/irgendwo/irgendwas.conf mit Rootrechten im Editor Gedit öffnen.

GVFS ist standardmäßig bei Ubuntu installiert, kann aber unter allen Ubuntuderivaten nachträglich installiert werden. Weitere Informationen sind im Wikiartikel zu gio zu finden.

Hinweise für Kubuntu

Neuere Versionen von Kubuntu ab 18.04 sind restriktiver als Ubuntu und andere Derivate. So ist das Ausführen des Dateimanagers Dolphin oder der Editoren Kate und KWrite weder mit sudo noch mit pkexec möglich. Man erhält eine Fehlermeldung wie "Executing Kate as root is not possible.".

Allerdings kann man Dateien, für die zum Editieren Rootrechte benötigt werden, regulär wie "normale" Dateien in Kate öffnen und wird dann beim Speichern nach dem Passwort eines Benutzer mit Rootrechten gefragt.

Hinweis für Lubuntu

Unter Lubuntu kann man auch lxqt-sudo (oder abgekürzt lxsudo) verwenden, um administrative Rechte für grafische Anwendungen zu erlangen.

in einer Root-Shell arbeiten

Wer für umfangreichere Arbeiten am System im Terminal viele Befehle mit Rootrechten ausführen muss, kann direkt eine Rootshell aufrufen. Dann braucht man nicht jedem Befehl pkexec bzw. sudo voranstellen.

Eine Rootshell kann man wie folgt öffnen:

pkexec bash -l
#oder
sudo -i 

Nach Beendigung der Arbeiten sollte man die Rootshell unbedingt mit

exit 

verlassen, um in eine normale, unprivilegierte Shell zurück zu kehren.

Root-Rechte für grafische Programme mit Wayland

Bei Verwendung von Wayland als Anzeige-Server können grafische Programme grundsätzlich nicht mit Rootrechten ausgeführt werden, weil dies von Wayland aus Sicherheitsgründen unterbunden wird. Dies betrifft jedoch nur Programme, die nativ unter Wayland laufen; für andere wird in einer Wayland-Session der X-Server XWayland gestartet, bei dem alle Probleme wie unter anderen X-Servern auftreten können. Es wird daher empfohlen, auch unter Wayland wie unter X11 keine GUI-Programme mit sudo zu starten.

Bei den aktuellen LTS-Versionen von Ubuntu kommt Wayland standardmäßig ab Ubuntu 22.04 LTS zum Einsatz. Die LTS-Versionen davor nutzen standardmäßig den X-Server.

kein Benutzer mit Rootrechten vorhanden

Sollte - aus welchen Gründen auch immer - kein Benutzer mehr im System vorhanden sein, der die nötigen Rechte hat, um mit Rootrechten zu arbeiten, kann man auch diese Situation korrigieren. Das Vorgehen ist im Wikiartikel Administrator im Abschnitt "Notfall" beschrieben.

Diese Revision wurde am 8. April 2023 08:35 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Shell