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

12/2017
Schräge Hacks

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

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 RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Digitaler Widerstand

  • 3, 2, 1 … los!

    Ein Countdown ist nicht nur in der Raumfahrt sinnvoll. Mit einem Raspberry Pi und etwas Elektronik zählen Sie die Zeit bis zu einem beliebigen Ereignis optisch eindrucksvoll herunter.

  • Blog out of the box

    Das bei Bloggern beliebte CMS Wordpress kommt besonders Einsteigern mit einer einfachen Oberfläche und aktiven Community entgegen. Mit Blog In A Box setzen Sie ein solches Komplettsystem im Handumdrehen auf einem RasPi auf.

  • Angetestet

    Barefootd 1.4.1 leitet Ports und Verbindungen weiter, schlanke OpenSSH-Alternative Dropbear 2017.75, Httpbench 0.2.2 erfasst Webserver-Reaktionszeiten, Mtr 0.92 kombiniert Traceroute und Ping.

  • Öfter mal was Neues?

    Mit dem neuen Raspbian-Release "Stretch" schlägt die Raspberry Pi Foundation überflüssige technische Kapriolen, die einer auf Bildung und Ausbildung fokussierten Organisation schlecht zu Gesicht stehen, findet Chefredakteur Jörg Luther.

  • Aufgeweckt

    Dank der Chat-Plattform Telegram und einem eigenen Chatbot kommunizieren Sie mit dem Mini-PC selbst durch eine Firewall hindurch.

  • Elektropuzzle

    Das Board PiXtend erweitert den RasPi zu einer leistungsfähigen Steuereinheit. Neben dem Komplett-Kit bietet der Hersteller die Platine als Bausatz an, die Lötprofis viel Spaß bereitet und Einsteigern bei den ersten Schritten in der Elektronik-Welt hilft.

  • Nerds only

    Der Nerd-Wecker weckt – und macht gleichzeitig jede Menge Spaß beim Bauen und Anpassen.

  • Hightech-Halloween

    Ein gestandener Bastler zelebriert Halloween mit allerlei technischem Hokuspokus. Der Raspberry Pi liefert dafür die ideale Ausgangsbasis.