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/2018
Weltweiter Empfang

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Physiklabor

    Der Java-Dialekt Processing zielt auf interaktive Animationen ab und eignet sich auch für Programmiernovizen.

  • Abstand halten

    Der VL53L0X misst präzise Entfernungen bis zu zwei Metern. Das macht ihn zum passenden Kandidaten für RasPi-Projekte.

  • Tux-Funk

    Der SDR-Empfänger RSP2pro von SDRplay bringt Amateurfunk auf den Raspberry Pi.

  • Himbeersieb

    Die aus Österreich stammende Upribox auf Basis des Raspberry Pi schützt wirkungsvoll vor Gefahren aus dem Internet. Jetzt ist das System in der zweiten Version erschienen.

  • Unter Kontrolle

    Das programmierbare Steuermodul Controllino bietet mit seinen zahlreichen Ein- und Ausgängen vielfältige Möglichkeiten.

  • Dehnübungen

    Ein RasPi eignet sich bestens zum Steuern eines Fischertechnik-Roboters. Damit dabei kein Chaos entsteht, gilt es, die Steuerung genau zu programmieren.

  • Klangmaschine

    Der RasPi bringt genügend Performance mit, um als kleine DAW zu dienen. Mit Waveform 9 haben Sie die passende Software zur Hand.

  • Fremdgehen

    Nicht jedes Programm gibt es auch für die ARM-Architektur. Der kommerzielle Emulator Exagear Desktop fungiert als Übersetzer zwischen der ARM- und x86-Welt.

  • Ausfallsicher

    Eine selbst gebaute USV für den RasPi verschafft Ihnen die entscheidenden Sekunden, um bei unerwarteten Stromausfällen einem Datenverlust vorzubeugen.

  • Am laufenden Band

    Die Kombination aus einem Fischertechnik-Bausatz und dem Controllino-Modul bietet eine ideale Basis, um ein funktionierendes Industriemodell zu gestalten.