Aus Raspberry Pi Geek 02/2014

Programme mit Root-Rechten ausführen (Seite 2)

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.

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.

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

Sicher ist sicher

In der Regel sollte das System nach dem Nutzerpasswort fragen, wenn ein Nutzer Verwaltungsaufgaben ausführen möchte. Dass das bei Raspbian und dem Standardnutzer pi nicht so läuft, stellt schon fast einen groben Sicherheitsverstoß dar – denn so ist pi nichts anderes als ein verkappter root.

Stellen Sie sich beispielsweise vor, Sie nutzen den RasPi als Proxy oder Firewall, um den Internetzugang des Nachwuchses einzudämmen. Sobald Sie einmal kurz weg sind, springt die technisch nicht ganz ahnungslose Brut flugs an die Tastatur, öffnet eine Shell, kommentiert per ” sudo vim /etc/squid/squid.conf” (mit führendem Leerzeichen) einfach alle “störenden” Zeilen in der Konfigurationsdatei des ungeliebten Proxys aus und startet ihn mit ” sudo /etc/init.d/squid restart” neu. Dank der Leerzeichen an erster Stelle landet nichts in der History. Der Proxy läuft, tut’s aber nicht – Facebook und Schlimmerem sind nun Tor und Tür geöffnet.

Um dem abzuhelfen, müssen Sie noch einmal die /etc/sudoers bearbeiten. Der Grund, warum pi alles ohne Passworteingabe erledigen darf, findet sich in Form der Direktive NOPASSWD: in folgender Zeile:

pi ALL=(ALL) NOPASSWD: ALL

Das bedeutet nichts anderes, als dass pi niemals bestätigen muss, dass er wirklich pi ist. Jeder, der in Abwesenheit von pi Zugang zu Kommandozeile hat, kann also auch Root werden. Entfernen Sie NOPASSWD:, ist das Problem gelöst.

Doch die Authentifizierung stellt nicht die einzige Falle dar, die bei der Benutzung von Sudo lauert. Da jeder Kindprozess mit den Rechten des Elternprozesses läuft, sollten Sie sich hüten, den Benutzern zu viel zu erlauben: Gelingt es einem User, eine Shell zu starten, befördert er sich unter Umständen ganz schnell zu root, mit allen damit verbundenen Rechten. Das wäre etwa der Fall, wenn er sudo bash ausführen dürfte (wobei das auch mit jeder anderen Shell klappt).

Aber auch Anwendungen, die auf den ersten Blick harmlos aussehen, können verheerende Wirkung haben. Denken Sie nur an den Editor Vim oder das Datenbank-Managementsystem MySQL: Aus Vim heraus kann man mit :!bash eine Bash-Shell starten, der äquivalente Befehl für MySQL lautet \! bash. Dem gebieten Sie Einhalt, indem Sie wirklich nur die allernötigsten Befehle erlauben oder sicherheitskritische Befehle verbieten. Letzteres setzen Sie um, indem Sie den verbotenen Befehlen ein Ausrufezeichen voranstellen.

Soll der Anwender Donald Vim nicht mit Root-Rechten ausführen dürfen, aber sonst alles, was /usr/bin/ zu bieten hat, lautet die passende Anweisung in der /etc/sudoers folgendermaßen:

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben