[[Vorlage(Kopie, mit_Root-Rechten_arbeiten)]] [[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] "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, [:Rechte: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 [:Benutzer und Gruppen: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 [:PolicyKit/#pkexec:pkexec] funktionieren universell unter allen unterstützen Ubuntuversionen. {{{#!vorlage Warnung 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. {{{#!vorlage Warnung 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]: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudoedit /etc/irgendwo/irgendwas.conf }}} Als Editor wird standardmäßig [:Nano:] verwendet. Im Artikel [:sudo/#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 [#Dateien-mit-dem-GVFS-admin-Protokoll-oeffnen 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 [gnomeprojects:gvfs:Gnome Virtual File System] {en} (kurz: GVFS) verwenden, können seit [:17.04:] admin:// zum Öffnen bzw. Editieren von Dateien nutzen. So würde der Aufruf {{{#!vorlage Befehl 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: {{{#!vorlage Befehl pkexec bash -l #oder sudo -i }}} Nach Beendigung der Arbeiten sollte man die Rootshell unbedingt mit {{{#!vorlage Befehl exit }}} verlassen, um in eine normale, unprivilegierte Shell zurück zu kehren. = Root-Rechte für grafische Programme mit Wayland = Bei Verwendung von [wikipedia:Wayland (Display-Server-Protokoll):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 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/#Notfall:Administrator] im Abschnitt "Notfall" beschrieben. #tag: System, Shell