Programme mit Root-Rechten ausführen

© Carlos Caetano, 123RF

An der Wurzel

Sudo verleiht Ihnen Super(-User)-Kräfte, denn Sie dürfen damit Programme unter einer fremden Benutzer-ID ausführen. Wir zeigen Ihnen, welche Möglichkeiten und Gefahren damit einhergehen und wie Sie Sudo an Ihre Bedürfnisse anpassen.

README

Auf einem Linux-System ist Root derjenige, der alles darf. Das hat neben Vorzügen aber auch Nachteile. Mit Sudo führen normale Nutzer Programme unter der Benutzer-Id von Root aus. So kann das Root-Passwort geheim bleiben, und es lässt sich später nachvollziehen, wer was in der Rolle des Superusers getan hat.

In einem typischen Linux-System haben gewöhnliche Nutzer meist nicht das Recht, administrative Aufgaben auszuführen. Nur der Benutzer root, also der Administrator, darf neue Anwendungen installieren, Systemdienste konfigurieren und starten oder Nutzer verwalten. Um Root zu werden, loggen Sie sich als root ein oder wechseln mit dem Kommando su - ("switch user") die Identität. Geben Sie dabei keinen Benutzernamen an, wechselt Su standardmäßig zu root. Das Minus-Zeichen hinter su führt die Shell-Initialisierungsdateien für root aus und setzt so dessen Systemumgebung.

Sind Sie der einzige Administrator, stellt der Super-User-Switch kein Problem dar. Nachteilig könnte es sich höchstens auswirken, wenn Sie vergessen, sich mit exit wieder abzumelden, und dann zu viele Aufgaben mit Root-Rechten erledigen. Gibt es jedoch mehrere Nutzer, die über administrative Macht verfügen sollen, wird es schon schwieriger: Entweder müssen Sie all diese Nutzer der Gruppe root hinzufügen, großzügig das SUID-Bit setzen oder das streng geheime Root-Passwort an alle verteilen. Weder das eine noch das andere erscheint unter Sicherheitsaspekten sehr akzeptabel.

SUID-Bit: Set User ID. Ausführbare Programme, bei denen das SUID-Bit gesetzt ist, werden mit den Rechten des Benutzers ausgeführt, dem die Datei gehört, statt mit den Rechten des aufrufenden Benutzers.

Zum Glück gibt es jedoch Sudo. Damit erlauben Sie bestimmten Nutzern, alle oder nur wenige Administrationsaufgaben auszuführen. Beispielsweise dürfen Sie als Administrator alles, der Webmaster darf Apache oder Nginx starten und der Sicherheitsbeauftragte die Firewall Iptables in Stellung bringen. Nach dem Abarbeiten des mit Sudo übergebenen Kommandos erhält sofort wieder der ursprüngliche Benutzer die Kontrolle. Kommt Sudo also wie gedacht zum Einsatz, sollte an keinem Arbeitsplatz eine unbeaufsichtigte Root-Shell herumdümpeln.

Mit Sudo genügt es, wenn nur eine oder zwei Personen das Root-Passwort kennen. Daher müssen Sie es auch nicht ändern, wenn einem Admin einmal die Rechte entzogen werden. Administrative Aufgaben und die dabei eventuell gemachten Fehler lassen sich dank der Protokollierung in /var/auth.log leichter einer Person zuordnen, als es bei mehreren Admins der Fall wäre, die sich als Root an einem System anmelden (Abbildung 1).

Abbildung 1: Vier Admins, und niemand will es gewesen sein. Oder: Vier Sudoer und eine Log-Datei als Zeuge.

In vielen User-Distributionen ist Sudo bereits installiert und für den Hauptnutzer konfiguriert, so auch in der von der Raspberry-Pi-Foundation empfohlenen Raspbian-Variante. In der Raspbian-Minimal-Distribution Darkbasic fehlt es dagegen: Dort müssen Sie sich als root anmelden und Sudo via apt-get install sudo aus den Paketquellen installieren.

Die Nutzung von Sudo gestaltet sich in der Praxis denkbar einfach: Sie stellen einem Befehl, den Sie als root ausführen möchten, schlicht ein sudo voran. Sie können das ganz schnell prüfen, indem Sie Ihrem RasPi ein sudo whoami zukommen lassen: Whoami gibt den Namen zurück, der zur momentanen Benutzer-Id gehört. Ein alleiniges whoami liefert den gewöhnlichen Nutzer, eines mit Sudo gibt root aus (Abbildung 2).

Abbildung 2: Sudo verleiht Root-Rechte. Es lassen sich damit aber auch Befehle unter jeder anderen auf dem System vorhandenen Identität ausführen.

Sudo konfigurieren

Sie konfigurieren Sudo über die Datei /etc/sudoers. Um jetzt neue sogenannte Sudoer hinzuzufügen, könnten Sie die Datei direkt editieren. Eleganter klappt das aber mittels des Helferleins visudo. Es öffnet die Datei /etc/sudoers im Standard-Editor des Systems (Nano oder Vi), sperrt Sie, während Sie daran arbeiten, und nimmt zusätzlich eine Syntaxkontrolle vor. Letztere stellt sicher, dass niemand aufgrund einer fehlerhaften /etc/sudoers vom Sudoing ausgeschlossen wird (Abbildung 3).

Abbildung 3: Ignoriert der Admin Visudos Warnungen, ist Schluss mit Sudoing: Hier hilft nur noch, die /etc/sudoers von einem anderen System aus zu bearbeiten.

Die /etc/sudoers gliedert sich in mehrere Sektionen, in denen Sie Aliasse für Hosts, Nutzer, und Kommandos sowie die eigentlichen Privilegien zum Ausführen von Kommandos spezifizieren. Die Aliasse können Sie nutzen, um mehrere Nutzer, Befehle oder Hosts zu gruppieren.

Die Privilegienvergabe erfolgt folgendermaßen: An erster Stelle steht der Name des Benutzers, dem Sie administrative Aufgaben zutrauen und erlauben. An zweiter Stelle steht der Host. Das bedeutet hier nicht, dass ein Nutzer des mit dem Hostnamen assoziierten Rechners Root-Rechte erhält, sondern dass die Zeile nur für den Rechner mit erwähntem Hostnamen gilt. Die /etc/sudoers kann man nämlich, einmal erstellt, auf alle Rechner eines Netzwerks verteilen, was für Root vieles einfacher macht. Jeder Rechner wertet die Datei aus und berücksichtigt nur die ihn betreffenden Zeilen. Anstelle des Hostnamens dürfen Sie auch IP-Adressen oder Netzwerkbereiche angeben, etwa 192.168.1.13 oder 192.168.10.0/24. Nach dem Hostnamen folgen ein Gleichheitszeichen sowie der erlaubte Befehl respektive die erlaubten Befehle, denn Sie dürfen hier mehrere aufzählen.

In jeder /etc/sudoers findet sich die Zeile root ALL=(ALL:ALL) ALL. Das ALL gilt wortwörtlich, denn es meint wirklich alles. Übersetzt besagt die Zeile, dass Root auf allen Rechnern (das erste ALL) unter allen Benutzer- und Gruppen-IDs (ALL:ALL entspricht hier user:group) alles darf (das letzte ALL). Steht hingegen nach dem Gleichheitszeichen nur ein einzelnes (ALL), darf dieser Anwender nicht die Gruppenidentität ändern.

Möchten Sie jetzt die leidigen Updates auf dem Host raspberrypi an den Nutzer donald delegieren, könnten Sie das mit der Zeile donald raspberrypi=/usr/bin/apt-get tun.

Aliasse und Variablen

Jetzt noch ein paar Worte zu den bereits erwähnten Aliassen: Mit ihnen gestalten Sie die /etc/sudoers übersichtlicher. Angenommen, Sie möchten auch den Benutzern Tick, Trick und Track Updates zumuten, von denen jeder einen eigenen RasPi besitzt. Anstatt für jeden eine einzelne Zeile zu tippen, erstellen Sie je einen passenden User- und Host-Alias:

User_Alias DUCKS = donald, tick, trick, track
Host_Alias RPIS = raspberrypi, rpitick, rpitrick, rpitrack

Dass jeder der Ducks das System jedes in RPIS aufgeführten Hosts aktualisieren kann, veranlassen Sie mithilfe der Zeile DUCKS RPIS=/etc/apt-get.

Sollen es irgendwann einmal mehr Kommandos sein, erstellen Sie einfach ein Kommando-Alias, das etwa wie folgt aussehen könnte:

Cmnd_Alias DUCKCOMMANDS = /usr/bin/apt-get, Befehl2, Befehl3 ...

Möchte ein Nutzer wissen, welche Kommandos er mit Root-Rechten ausführen darf, befragt er das System mit sudo -l danach (Abbildung 4).

Abbildung 4: Wer darf was sudoen? Der Befehl sudo -l gibt Auskunft.

Sie können privilegierte Rechte nicht nur einzelnen Benutzern geben, sondern auch kompletten im System definierten Benutzergruppen. Ein Beispiel dafür liefert die Zeile %sudo ALL=(ALL:ALL) ALL, die nichts anderes besagt, als dass alle zur Gruppe sudo gehörenden Benutzer Root-Rechte erhalten sollen. Dazu muss die Gruppe sudo bereits existieren – gibt es sie nicht, legen Sie sie mit groupadd sudo an.

Mit einem grep sudo /etc/group entlocken Sie dem System die zur Gruppe sudo gehörigen Mitglieder. Fehlt ein Nutzer, der Root-Privilegien genießen soll, fügen Sie ihn mit folgendem Befehl hinzu:

$ sudo usermod -a -G sudo Username

Etwas schwieriger wird es, den Benutzer wieder aus der Gruppe zu entfernen. Entweder editieren Sie die Datei /etc/group, oder Sie nutzen folgenden Befehl:

$ sudo usermod -G Username, Gruppe1, ... Username

Er löscht den Benutzer aus allen Gruppen, die Sie nicht aufzählen. Um dem Benutzer nicht versehentlich zu viele Rechte zu entziehen, lassen Sie sich sicherheitshalber vorher mit groups Username oder id -nG Username alle Gruppen anzeigen, denen er angehört.

Visudo nutzt die Variablen SUDO_EDITOR, VISUAL und EDITOR, um den Editor für die /etc/sudoers zu bestimmen. Ist keine dieser Variablen gesetzt, prüft Visudo in /etc/visudoers die Zeile Defaults editor=/usr/bin/nano:/usr/bin/vim und startet den ersten im System gefundenen Editor. Gibt es auch diese Zeile nicht, kommt der in /etc/alternatives/editor verlinkte Editor zum Zug. Um hier etwas zu ändern, bearbeiten Sie die Defaults editor oder setzen in der ~/.bashrc oder ~/.profile eine entsprechende Variable. Ebenso ist es möglich – und wahrscheinlich viel einfacher – den Standard-Editor mit sudo update-alternatives --config editor umzubiegen (Abbildung 5).

Abbildung 5: Falls Sie Nano nicht mögen, wechseln Sie einfach den Default-Editor.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Arch Linux unkompliziert auf dem RasPi 2 einrichten

    RaspArch vereinfacht das Installieren von Arch Linux auf einem Raspberry Pi der zweiten Generation erheblich: Statt das System Schritt für Schritt einzurichten, spielen Sie RaspArch komplett auf. Ein paar Hürden müssen Sie trotzdem überwinden.

  • Owncloud-Fork Nextcloud auf dem RasPi im Praxistest

    Führende Owncloud-Entwickler, darunter der Gründer Frank Karlitschek, überwarfen sich mit dem Kurs des Projekts und haben mit Nextcloud einen Fork gestartet. Der soll ein besseres Gleichgewicht zwischen Unternehmen, Kunden und Nutzern herstellen.

  • Der Raspberry Pi als VPN-Gateway mit Access Point

    Mit ein wenig Know-how verwandeln Sie im Handumdrehen einen Raspberry Pi in ein abgesichertes System mit integriertem VPN-Gateway für die Geräte in Ihrem heimischen Netz.

  • Raspberry Pi als Datei- und Drucker-Server

    Dank seines geringen Stromverbrauchs eignet sich der RasPi optimal für den Einsatz als rund um die Uhr laufender Home-Server. Dabei lässt er sich innerhalb kürzester Zeit sehr flexibel an die eigenen Wünsche anpassen.

  • Raspberry Pi als Webserver

    Raspbian bringt alles mit, was Sie für die Konfiguration und den Betrieb eines vollwertigen Webservers samt PHP, Datenbank und CMS im heimischen LAN brauchen. So erstellen und testen Sie eigene Webseiten, ohne der Gefahr von Attacken ausgesetzt zu sein.

Aktuelle Ausgabe

10/2017
Addon-Boards

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial eines Mini-PC. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den Raspberry Pi und Konsorten, sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Aufgewacht!

    Der Raspberry Pi fährt auf Kommando herunter, doch zum Aufwachen fehlt ihm eine Echtzeituhr. Mit einer RTC und ein paar Schaltungen steuern Sie den Schlaf- und Wachrhythmus des Mini-Rechners.

  • Schneller Wechsel

    Mit dem Messkopf ExpEYES Junior erfassen Sie auf einfache Weise die Flimmerfrequenz von verschiedenen Lichtquellen.

  • Knirps

    Der 3,2 Zoll kleine Monitor von Joy-it, zusammen mit dem RasPi kaum größer als eine Packung Zündhölzer, bietet eine interessante Alternative zu einer reinen Headless-Konfiguration. Er erleichtert das Überwachen des Boot-Vorgangs und das Verfolgen von Ausgaben, die nur ein Paar Zeichen oder Zeilen umfassen.

  • Minimalistisch

    Die Raspberry-Pi-Familie bekommt regelmäßig Zuwachs, doch einige Familienmitglieder fristen ein Schattendasein, wie das Compute Module. Das kompakte Board eignet sich bestens für Embedded-Lösungen.

  • Meisencam

    Mit einem RasPi, einer NoIR-Pi-Cam und etwas Elektronik bauen Sie für unter 100 Euro ein digitales Auge, mit dem Sie behutsam Singvögel in der Natur beim Brüten beobachten.

  • Mit einfachen Mitteln

    YunoHost bietet eine große Anzahl von Diensten auf einer bewährten Debian-Server-Plattform, die Sie selbst hosten können.

  • An einem Tisch

    Gemeinsames Arbeiten auf einer mobilen Plattform im lokalen Netzwerk – dazu brauchen Sie nicht mehr als einen SBC und die Software Etherpad Lite.

  • Netz aufspannen

    Ein WLAN-Access-Point bietet einen zusätzlichen Einstieg ins LAN und erlaubt im Zusammenhang mit dem RasPi vielfältige Einsatzszenarien.

  • Diätkost

    Für ältere Modelle des RasPi erweist sich Raspbian mittlerweile als zu schwergewichtig. Mit dem schlanken DietPi helfen Sie diesen Modellen wieder auf die Sprünge.