Superuser-Rechte für normale Anwender

Aus LinuxUser 04/2018

Superuser-Rechte für normale Anwender

© MaximMaksutov-123RF

Starkes Duo

Mit Su und Sudo erhalten Sie in der Shell Root-Rechte – das Netz wimmelt von entsprechenden Beispielen. In der Praxis zeigt sich jedoch schnell, dass der Einsatz der Kommandos von der verwendeten Distribution abhängt.

Sie installieren ein System unter Linux neu. Der Installer fragt die gewünschten Systemeigenschaften ab und konfiguriert das System. Dazu legt er unter anderem ein Benutzerkonto an und fragt die zu installierende Software sowie einige grundlegende Systemeinstellungen ab. Viele Distributionen erfordern zudem das Anlegen eines Kontos für den administrativen User root.

Nach der Installation startet das System neu, ein nachgelagerter Prozess führt durch weitere Einstellungen. Anschließend steht der Rechner zur Alltagsarbeit bereit. Ab jetzt gelingen Konfigurationsänderungen sowie das Hinzufügen oder Löschen von Anwendungen nur noch mit Root-Rechten.

Prinzipiell gibt es zwei Wege, diese Rechte zu erhalten. Wir haben uns das am Beispiel der Distributionen Debian 9.2, Fedora 26 und Ubuntu LTS 16.04 einmal genauer angesehen. Die Tabelle “Konten nach der Installation” fasst die Unterschiede in Bezug auf das Anlegen von Benutzerkonten zusammen.

Distribution

Benutzer

Root

Admin-Gruppe

Besonderheiten

Debian 9.2

ja

ja

sudo

sudo in Standardinstallation nicht vorhanden

Fedora 26

ja

ja

wheel

Benutzer in Admin-Gruppe optional

Ubuntu LTS 16.04

ja

nein

sudo

Benutzer in Admin-Gruppe

Zu den Grundlagen für die hohe Sicherheit des Betriebssystems Linux zählt, dass die tägliche Arbeit mit eingeschränkten Rechten erfolgt, den sogenannten User- oder Benutzerrechten. Dagegen gelingen systemrelevante Änderungen, wie beispielsweise das Verwalten von Softwarepaketen, die Konfiguration von Diensten oder grundlegende Systemeinstellungen, nur mit Root-Rechten (siehe Kasten “Linux-Benutzer”).

Linux-Benutzer

Linux unterscheidet streng zwischen dem administrativen Benutzer root und normalen Benutzerkonten. Typischerweise legt die Installationsroutine ein Konto für root an. Dieser Benutzer unterliegt keinerlei Einschränkungen, die dem Konto zugeordneten Rechte erlauben den uneingeschränkten Zugriff auf das System. Deswegen bezeichnet man root häufig auch als Superuser. Normale Benutzer arbeiten hingegen mit eingeschränkten Rechten: Sie dürfen ausschließlich auf ihre eigenen Dateien zugreifen und keinerlei administrative Aufgaben erledigen.

Die Installer der betrachteten Distributionen erfragen die Daten für das Anlegen des Benutzerkontos, nicht jedoch zwangsläufig auch solche für das Konto root. So legt beispielsweise Ubuntu ein Root-Konto ohne Passwort an, das sich deswegen erst einmal nicht nutzen lässt. Damit er auch administrative Aufgaben erledigen kann, fügt Ubuntu den angelegten Benutzer stattdessen der Gruppe der Administratoren hinzu, die sudo heißt. Über das gleichlautende Kommando sudo kann der Benutzer dann Root-Rechte erlangen und administrative Aufgaben ausführen. Fedora erlaubt ebenfalls eine solche Gruppenzuordnung, richtet sie aber bei der Installation nur auf ausdrücklichen Wunsch ein.

Der einfachste Weg, sich Root-Rechte zu verschaffen, führt über die Anmeldung als root. Schafft es in diesem Zustand aber ein Schadprogramm, sich einzuklinken, erhält es damit den entsprechenden Rechtekontext und damit vollen Zugriff auf das gesamte System. Daher sollte man nur in Extremfällen als root arbeiten, etwa bei einer Systemwiederherstellung. Ubuntu geht hier sogar so weit, eine versehentliche Anmeldung als Root a priori zu unterbinden, indem das Konto in der Vorgabe kein Passwort erhält.

Ein normaler Benutzer nutzt die Kommandos su und sudo, um Befehle mit administrativen Rechten auszuführen. Nach Erledigung des jeweiligen Befehls kehrt der User automatisch wieder in den eingeschränkten Rechtekontext zurück, sodass potenzielle Malware keine Gelegenheit mehr hat, wichtige Systemeinstellungen zu manipulieren.

Die in der Vergangenheit häufiger verwendeten grafischen Ableger der Kommandos, wie etwa gksu und gksudo, verlieren zunehmend an Bedeutung, weswegen wir sie im Folgenden ausklammern.

Das Kommando <C>su<C>

Manche meinen, der Name des Kommandos su leite sich von “substitute user identity” ab (ersetze Benutzeridentität); andere halten es für eine Abkürzung des Begriffs “switch user”. Letzteres fällt nicht nur kurz und prägnant aus, sondern beschreibt den Einsatz auch perfekt; die grundlegende Syntax lautet

$ su [<i>Optionen<i>] [<i>Benutzer<i>]

Sie können also mit Su in den Rechtekontext jedes beliebigen Benutzers umschalten, müssen sich dazu aber mit dessen Passwort authentifizieren. Die Angabe der Parameter Optionen und Benutzer sind optional. Als Standardwert für Ersteres dient der Start einer interaktiven Shell; geben Sie kein Benutzerkonto an, nimmt Su an, dass Sie root werden möchten.

Alle Distributionen bringen das Kommando Su mit, bei Ubuntu lässt es sich aufgrund des nicht initialisierten Root-Passworts allerdings zunächst nicht für administrative Zugriffe verwenden.

Dem mit Root-Rechten auszuführenden Befehl stellen Sie ein -c voran. Erfordert dieser weitere Parameter oder möchten Sie mehrere Befehle übergeben, schließen Sie diese in Hochkommas ein (Listing 1). Sogar die Übergabe von Skripten ist möglich, aber aus Sicherheitsgründen nicht zu empfehlen. Die Tabelle “Anwendungsbeispiele von Su” zeigt einige typische Einsatzfälle.

Listing 1

$ su -c 'echo whoami - $(whoami); echo HOME - $HOME'
Passwort:
whoami - root
HOME - /root

Kommando

Funktion

su -c 'ls /var/log'

Verzeichnis /var/log mit Root-Rechten lesen

su -c 'echo $HOME'

Name des Home-Verzeichnisses ausgeben (/root)

su -c 'echo $USER'

Name des Benutzers ausgeben (root)

su -c 'gpasswd -a otto sudo'

Benutzer otto der Gruppe sudo hinzufügen(1)

su -c 'gpasswd -d otto sudo'

Benutzer otto aus der Gruppe sudo entfernen(1)

su -c 'apt install sudo'

Paket sudo installieren (fehlt bei Debian)

(1) Änderung der Gruppenzuordnung greift erst bei Neuanmelden des Benutzers

Das System notiert jede Verwendung von Su mit Benutzernamen und Zeitstempel. Bei Debian finden Sie die entsprechenden Einträge beispielsweise in der Textdatei /var/log/auth.log (Abbildung 1).

Abbildung 1: Das System protokolliert jeden Aufruf von Su.

Abbildung 1: Das System protokolliert jeden Aufruf von Su.

Bei Debian und Fedora bietet Su in der Vorgabe den einzigen Weg, um administrative Aufgaben als Benutzer zu erledigen. Zugehörige Hilfeseiten erhalten Sie mit der Eingabe von man su. Eine ausführlichere Dokumentation [1] gibt es nur in Englisch.

Der große Nachteil von Su: Zum Erledigen administrativer Aufgaben muss der Benutzer das Root-Passwort kennen. Auf Desktop-Systemen, wo es sich bei Root und Benutzer oft um dieselbe Person handelt, lässt sich das noch vertreten, in größeren Installationen sicherlich nicht.

Das Kommando <C>sudo<C>

An dieser Stelle setzt das Kommando sudo (“superuser do”) an. Die Vergabe der Root-Berechtigung erfolgt dabei auf Basis der Gruppenzugehörigkeit: Ist der aufrufende Benutzer Mitglied der administrativen Gruppe und kennt zudem sein eigenes Passwort, darf er Kommandos mit administrativen Rechten ausführen.

Alle Distributionen legen bei der Installation eine solche Admin-Gruppe an. Entsprechende Einträge in der Sudo-Konfigurationsdatei /etc/sudoers ermöglichen den uneingeschränkten Systemzugriff für die Mitglieder dieser Gruppe. Ubuntu und dessen Derivate ordnen den Benutzer bereits bei der Installation der Admin-Gruppe zu, bei vielen anderen Distributionen müssen Sie das manuell erledigen. Die Tabelle “Anwendungsbeispiele von Su” zeigt dies am Beispiel des Benutzers otto.

Beim Aufruf stellen Sie das Kommando sudo dem auszuführenden Befehl voran und hängen eventuelle Parameter direkt an. In der Tabelle “Anwendungsbeispiele von Sudo” finden Sie einige typische Beispiele.

Kommando

Funktion

sudo ls /root

Home-Verzeichnis des Benutzers Root anzeigen

sudo gpasswd -a otto sudo

Benutzer otto der Gruppe sudo hinzufügen

sudo gpasswd -d otto sudo'

Benutzer otto aus der Gruppe sudo entfernen

sudo passwd root

Root-Passwort setzen

sudo apt install mc

Programmpaket mc installieren

In der Standardeinstellung verlangt Sudo beim ersten Aufruf die Eingabe Ihres Benutzerpassworts. Mit dem erfolgreichen Aufruf startet ein Timer. Bis er abläuft, erfolgt bei weiteren Sudo-Aufrufen keine weitere Passwortabfrage; jeder erneute Aufruf von Sudo setzt den Timer zurück. Der Timer bleibt mit dem Terminal verknüpft, in dem Sie Sudo gestartet haben.

Wie Su unterstützt auch Sudo die Eingabe mehrerer Befehle und – mit einigen Einschränkungen – auch das Ausführen direkt eingegebener Shell-Skripte. So darf das erste Kommando beispielsweise keine Variablenzuweisung sein. Auch bei Sudo sollten Sie jedoch pro Aufruf nur ein Kommando übergeben und aus Sicherheitsgründen auf die direkte Angabe von Skripten verzichten.

Aus offensichtlichen Gründen bleibt es Mitgliedern der Admin-Gruppe vorbehalten, dieser neue Benutzer hinzuzufügen. Versucht ein Benutzer ohne entsprechende Rechte, Sudo zu verwenden, erfolgt eine entsprechende Fehlermeldung. Gleichzeitig erhält Root eine E-Mail mit einer Warnung (Listing 2), die das System unter /var/mail/root/ ablegt. Außerdem protokolliert das System jeden Aufruf von Sudo, bei Debian und Ubuntu etwa in /var/log/auth.log (Abbildung 2).

Listing 2

$ sudo ls
[sudo] Passwort für otto:
otto ist nicht in der sudoers-Datei. Dieser Vorfall wird gemeldet.

Abbildung 2: Vim hebt Fehlversuche bei der Anmeldung farblich hervor.

Abbildung 2: Vim hebt Fehlversuche bei der Anmeldung farblich hervor.

Bei Mitgliedern der Admin-Gruppe fragt auch die grafische Oberfläche gegebenenfalls nach dem Passwort des Benutzers, anderenfalls nach dem Root-Passwort. Wie Abbildung 3 zeigt, verweist das System klar darauf, wessen Passwort Sie im konkreten Fall eingeben müssen.

Abbildung 3: Gnome fragt nach dem Passwort von Otto.

Abbildung 3: Gnome fragt nach dem Passwort von Otto.

Neben dem Erlangen von Root-Rechten bietet Sudo übrigens noch viele weitere Funktionen, die ein Aufruf von man sudo verrät.

Sudo anpassen

Die globale Sudo-Konfigurationsdatei finden Sie unter /etc/sudoers. Alle betrachteten Distributionen verfügen zudem über das Verzeichnis /etc/sudoers.d. Hier landen für gewöhnlich weitere Konfigurationsdateien, zumindest dann, wenn die globale Konfigurationsdatei den Eintrag #includedir /etc/sudoers.d enthält. Das Einlesen der Dateien erfolgt in alphabetischer Reihenfolge, der Aufruf man sudoers liefert weitere Informationen.

TIPP

Eine ausführliche und sehr nützliche Anleitung zur Konfiguration von Sudo über /etc/sudoers in englischer Sprache finden Sie auf den Webseiten des bolivianischen Elektroingenieurs und Linux-Enthusiasten Guillermo Garron [2]. Eine nicht ganz so ausführliche, dafür aber deutschsprachige Einführung rund um Sudo liefert Ubuntuusers.de [3].

Beachten Sie beim Bearbeiten der Sudo-Konfigurationsdateien die im Kasten “Sudo: Konfigurationsdateien” angegebenen Hinweise. Sperrt ein Syntaxfehler in der Konfiguration den Sudo-Zugang, dann kann nur noch root aus der Patsche helfen, ansonsten ist das System ein Servicefall.

Sudo: Konfigurationsdateien

Fehler in einer der Sudo-Konfigurationsdateien sperren den Sudo-Zugang. Beachten Sie daher beim Bearbeiten der Konfigurationsdateien unbedingt die folgenden Hinweise.

Stellen Sie sicher, dass Sie sich als root anmelden können – nur der administrative Benutzer kann einen gesperrten Sudo-Zugang wieder freischalten. Öffnen Sie als Test beispielsweise mit su eine interaktive Root-Shell. Bei Ubuntu müssen Sie vorab mittels sudo passwd root zunächst ein Root-Passwort vergeben.

Legen Sie mit administrativen Rechten eine Sicherungskopie der zu bearbeitenden Datei an, sodass Sie gegebenenfalls das Original wiederherstellen können.

Bearbeiten Sie die Konfigurationsdateien ausschließlich mit Visudo. Das Programm prüft vor dem Verlassen die bearbeitete Datei auf Unstimmigkeiten und erlaubt so Korrekturen. Verlassen Sie den Editor nur, wenn er keine Fehler meldet und Sie sich wirklich absolut sicher sind.

Bearbeiten Sie die Konfigurationsdateien in einem Ihnen vertrauten Editor. Setzen Sie diesen gegebenenfalls vor oder beim Aufruf von Visudo über die Systemvariable EDITOR. Möchten Sie etwa Vim verwenden, tippen Sie sudo EDITOR=vim visudo.

Vermeiden Sie das Bearbeiten der globalen Konfigurationsdatei /etc/sudoers, und nehmen Sie Änderungen stattdessen in separaten Dateien im Verzeichnis /etc/sudoers.d vor.

Das Einbinden externer Konfigurationsdateien erspart das Bearbeiten der teilweise recht komplexen globalen Konfigurationsdatei /etc/sudoers und ermöglicht, die gewünschten Änderungen strukturiert auf mehrere Dateien zu verteilen. Tritt dabei ein Fehler auf, sodass das System den Sudo-Zugang sperrt, löschen Sie einfach als root die fehlerhafte Konfigurationsdatei.

Sudo-Konfigurationsdateien bearbeiten Sie grundsätzlich und ausschließlich mit dem Programm Visudo (Listing 3). Rufen Sie es ohne Parameter auf, startet es den in der Systemvariablen $EDITOR eingetragenen Texteditor. Ist die Variable nicht gesetzt, verwendet Visudo den Standardeditor, typischerweise also Vim oder Nano.

Listing 3

$ sudo visudo -f /etc/sudoers.d/01_meine_konfig

Visudo überprüft beim Beenden des Editors die bearbeitete Datei auf Syntaxfehler. Treten Unstimmigkeiten auf, liefert es eine Warnung und gibt Ihnen die Möglichkeit, das Bearbeiten der Datei fortzusetzen. Wie Abbildung 4 zeigt, führt das Ignorieren dieser Warnung meist zu einem gesperrten Sudo-Zugang. Im Beispiel erfolgten die Änderungen in einer eigenen Konfigurationsdatei; nach deren Löschen durch root klappte der Zugang wieder.

Abbildung 4: Ausgesperrt: Sperren Fehler in der Sudo-Konfiguration den Zugang, muss <span class="ui-element">root</span> ran.

Abbildung 4: Ausgesperrt: Sperren Fehler in der Sudo-Konfiguration den Zugang, muss root ran.

Im Folgenden soll ein Beispiel demonstrieren, wie Sie die Konfiguration von Sudo anpassen. Erstellen Sie mit Visudo mit der Option -f die Datei /etc/sudoers.d/01_meine_konfig, und fügen Sie dort die in Listing 4 gezeigten Zeilen ein. Die Tabelle “Bedeutung der Konfigurationswerte (Debian)” zeigt die Bedeutung der einzelnen Einträge. Die Einstellungen greifen bereits nach dem Verlassen des Editors (Abbildung 5).

Listing 4

Defaults pwfeedback
Defaults lecture=always
Defaults passwd_tries=5
Defaults passwd_timeout=1
Defaults timestamp_timeout=1
Defaults insults

Wert

Bedeutung

Standardeinstellung

pwfeedback

Anzeige von Sternchen bei der Passworteingabe

keine Rückmeldung der Tastatureingabe

lecture

Verwendungshinweis vor jeder Passworteingabe

nur bei der ersten Verwendung von Sudo

passwd_tries

maximal 5 Versuche zur Passworteingabe

3 Versuche

passwd_timeout

Timeout bei Passworteingabe 1 Minute

kein Timeout

timestamp_timeout

Timeout für erneute Passworteingabe 1 Minute

15 Minuten

insults

Ausgabe kleiner Anzüglichkeiten bei falschem Passwort (nicht bei Fedora)

deaktiviert

Abbildung 5: Bei entsprechender Konfiguration schilt Sudo Sie bei falschen Passwortangaben.

Abbildung 5: Bei entsprechender Konfiguration schilt Sudo Sie bei falschen Passwortangaben.

Fazit

Die Kommandos Su und Sudo erlauben das System zu administrieren, unterscheiden sich aber im Ansatz. In der Standardkonfiguration verläuft die Arbeit mit beiden Programmen problemlos. Bedenken Sie bei Anpassungen, dass das Verhalten beider Kommandos auch von anderen Sicherheitsmechanismen abhängt, wie beispielsweise den allgemeinen Zugriffsregeln, den Regeln der Pluggable Authentication Modules (PAM) sowie Secure-Linux-Erweiterungen.

Su und Sudo führen die übergebenen Kommandos unter unterschiedlichen Benutzerkonten aus. Damit ändern sich während der Ausführung auch einige Systemvariablen, wie etwa $HOME und $USER. Die zugehörigen Manpages enthalten dazu weitere Informationen; für die typischen Anwendungsszenarien spielt das jedoch keine Rolle.

Welches der beiden Kommandos Sie verwenden, bleibt letztendlich Ihnen überlassen und richtet sich zum Teil nach persönlichen Vorlieben. Beachten Sie aber, dass die Arbeit mit administrativen Rechten immer ein potenzielles Sicherheitsrisiko darstellt. Einige Tipps dazu finden Sie im Kasten “Sicherheitshinweise”

Sicherheitshinweise

Root darf alles – selbst das System unsicher machen. Daher sollten Sie eine Reihe von Dingen vermeiden.

Selbst wenn es bequem erscheint, als Root zu agieren: Arbeiten Sie nur dann als administrativer Nutzer, wenn es sich nicht vermeiden lässt. Vermeiden Sie interaktive Root-Shells, und führen Sie länger aktiv bleibende Programme nicht mit Root-Rechten aus. Das gilt ganz besonders für Dateimanager wie etwa den Midnight Commander.

Vertippen Sie sich bei der Eingabe des Sudo-Passworts und haben die Eingabetaste bereits betätigt, dann warten Sie ab, bis das System sie erneut nach dem Passwort fragt – anderenfalls sind Ihre Eingaben sichtbar.

Der Benutzername von Root lautet immer root. Ein potenzieller Angreifer muss also nur noch das Passwort erraten. Vergeben Sie daher für dieses Konto immer ein besonders sicheres Passwort.

Aktuelle Distributionen ordnen jedem Benutzer eine eigene Gruppe zu; für Root heißt die zugehörige Gruppe root. Auch wenn das möglich ist: Fügen Sie niemals einen normalen Benutzer der Gruppe root hinzu.

Der Autor

Roman Jordan arbeitet seit mehr als 20 Jahren mit Linux. Zu den Schwerpunkten seiner Tätigkeit zählen der Einsatz von Linux als Entwicklungsumgebung für kleine Controllerplatinen sowie die Kernel-Programmierung.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 04/2018 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

1 Kommentar
Älteste
Neuste Beste Bewertung
rr
6 Jahre her

top

Nach oben