Raspberry Pi: Root-Rechte an Benutzer vergeben

Der Benutzer "root" ist ein Standard-Benutzer, der sich in jedem Linux-System befindet. Dieser Benutzername ist nicht nur bekannt, sondern auch noch mit uneingeschränkten Rechten ausgestattet. Wenn man einen Raspberry Pi normal nutzt, dann wird man das nicht als "root" tun, sondern als Benutzer "pi". Der hat aber nur eingeschränkte Rechte. Das heißt, er darf nicht alles tun.

Gelegentlich kommt es aber vor, dass man Änderungen am Raspberry Pi vornehmen muss, und dann braucht man die Rechte von "root" bzw. Root-Rechte. Bei der Linux-Distribution Raspbian ist es so, dass der Standard-Benutzer "pi" auf der Kommandozeile jederzeit Root-Rechte mit Hilfe von "sudo" oder "su" erhalten kann. Und das ohne Kenntnis des Root-Passworts. Je nach Sicherheitsbedürfnis möchte man diese Möglichkeit einschränken.

Hinweis: Der Root-Zugang ist ein Arbeitsmittel. Ohne Root-Rechte kann man auf keinem System Änderungen vornehmen. Allerdings stellt ein direkter Root-Zugang immer auch ein Sicherheitsrisiko dar, insbesondere dann, wenn der Zugriff nicht eingeschränkt wird.

Aufgaben

  1. Wie funktionieren die Root-Rechte in der Standard-Konfiguration?
  2. Schränken Sie die Root-Rechte für den Benutzer "pi" ein.
  3. Aktivieren Sie den Root-Account durch Festlegen eines Passworts.
  4. Deaktivieren Sie den Root-Account.

Hinweis: Änderung von Berechtigungen

Wenn man Berechtigungen ändert, dann testet man die in der Regel gleich. Nur so kann man sicherstellen, das es funktioniert, wie es gewünscht ist. Es kommt allerdings vor, dass beim Testen die Berechtigungen nicht wie eigentlich gewünscht funktionieren, obwohl die Änderung richtig durchgeführt wurde.
In solchen Fällen sollte man daran denken, dass Änderungen an Berechtigungen und Konfigurationen erst von aktiven Instanzen übernommen werden müssen. Je nach Instanz muss dazu die Instanz neu gestartet werden. Im Falle von Benutzerberechtigungen (Gruppen, usw.) muss sich der Benutzer erst abmelden und neu anmelden. Erst dann werden zum Beispiel Gruppenzuweisungen übernommen. Oder bei einer Änderung einer Server-Konfiguration muss der Dienst neu gestartet werden. Erst dann übernimmt der Dienst die geänderte Konfiguration. Es gibt sogar Konfigurationsänderungen, bei denen ein kompletter Neustart des Systems erforderlich ist.
Das bedeutet, bei der Änderung von Berechtigungen und Konfigurationen sollte man sich klar machen, wo man die Änderung vorgenommen hat (laufender Prozess oder Datei) und dann überlegen, welche Instanz davon betroffen ist (Benutzer, Dienst oder System) und ob diese Instanz neu gestartet werden muss, um die Änderung zu übernehmen.

Lösung: Root-Rechte in der Standard-Konfiguration

In der Standard-Konfiguration von Raspbian (Images ab Ende 2014) ist für den Benutzer "root" kein Passwort gesetzt. Dafür darf der Standard-Benutzer "pi" mittels "sudo" mit Root-Rechten arbeiten. Und zwar ohne Einschränkungen.
"sudo" wird im Allgemeinen als "super user do" bezeichnet. Allerdings steht "sudo" für "substitute user do". Mit "sudo" kann man also mit den Rechten jedes beliebigen Benutzers Kommandos ausführen und nicht nur "root". Vorausgesetzt man hat Root-Rechte.

sudo {KOMMANDO}

Lösung: Zu "root" wechseln

Allerdsings kann es ziemlich nervig sein immer "sudo" vor jeder Aktion zu schreiben. Deshalb gibt es Wege, wie man temporär oder dauerhaft zu "root" werden kann, um systemweite Änderungen vorzunehmen.

sudo -s
sudo su
sudo su -

Nach der Eingabe des Passworts wird die normale Shell zur Root-Shell.

Das Kommando "su" steht für "substitute user". Im Allgemeinen sagt man auch "super user" dazu. Mit "super user" ist "root" gemeint, der unbeschränkte Rechte auf einem System hat. Allerdings kann man mit "su" nicht nur zu "root", sondern zu jedem Benutzer werden.
Der Bindestrich "-" nach "su" bedeutet, das die komplette Umgebung (Aliase, Pfade u.s.w.) des Users zur Verfügung stehen und dabei auch in sein Home-Verzeichnis gewechselt wird. Lässt man das "-" weg, arbeitet man in der selben Umgebung weiter, aus welcher man gewechselt hat. In dem Fall werden nur die Berechtigungen übernommen.

Bei "sudo su -", was die Kurzform von "sudo su - root" ist, wechselt man ins Home-Verzeichnis von "root".

Mit "exit" kann man den übernommenen Benutzer verlassen und zum vorherig angemeldeten Benutzer zurückkehren. Eine eventuell aufgebaute SSH-Verbindung wird dabei aber nicht beendet.

Lösung: "sudo" installieren

In der Regel ist "sudo" auf Mehrbenutzer-Distributionen installiert. Es kann jedoch vorkommen, dass es nicht der Fall ist. Dann kann man es nachträglich installieren.

apt-get update
apt-get install sudo

Lösung: Root-Rechte einschränken (Benutzer-Passwort abfragen)

Normalerweise ist es so, dass der Benutzer "pi" nur beim Login nach seinem Passwort gefragt wird. Danach wird er nicht mehr nach seinem Passwort gefragt. Wenn der Benutzer dann seinen Arbeitsplatz verlässt, dann kann jeder ohne Beschränkung an diesem System arbeiten. Auch mit Root-Rechten mittels "sudo". Die Idee ist, die Berechtigungen so weit einzuschränken, dass der Benutzer "pi" ab und zu nach seinem Passwort gefragt wird, wenn er "sudo" verwendet.
Dazu muss man sicherstellen, dass der Benutzer "pi" der Benutzergruppe "sudo" zugeordnet ist.

sudo gpasswd -a pi sudo

Grundsätzlich kann man dadurch auch jeden anderen Benutzer zu einem Systemadministrator machen.
Diese Änderung wird aber erst nach der Ab- und Wiederanmeldung des Benutzers wirksam, sofern der Benutzer "pi" nicht schon vorher in der Benutzergruppe "sudo" drin war.

id pi

Anschließend ändern wir die sudo-Benutzersteuerung (Sudoers) mit "visudo". Damit wird eine Datei editiert, die man nie direkt editieren sollte.

sudo visudo

Verantwortlich für die Passwort-Abfrage bei der Nutzung von "sudo" ist die folgende Zeile. Sie sollte in der Konfigurationsdatei enthalten sein.

%sudo   ALL=(ALL:ALL) ALL

In der Konfigurationsdatei ändern wir die folgende Zeile:

pi ALL=(ALL) NOPASSWD: ALL

in

#pi ALL=(ALL) NOPASSWD: ALL

Damit kommentieren wir die Zeile, die ursprünglich dafür da war, dass der Benutzer "pi" ohne Passwort-Eingabe "sudo" benutzen durfte.
Danach die Datei speichern und schließen: Strg + O, Return, Strg + X.
"visudo" verifiziert vor dem Überschreiben der Original-Datei die Syntax. Falls man etwas falsch gemacht hat wird so verhindert, dass man sich auf diese Weise aussperrt.

Die Änderung gilt sofort. Jetzt muss "pi" beim ersten Kommandozeilenzusatz "sudo" sein eigenes Passwort eingeben, um Root-Rechte zu erlangen. Für ein paar Minuten darf "pi" dann ohne Passwort-Eingabe "sudo" weiter benutzen.

Lösung: Root-Account aktivieren

Im Allgemeinen fährt man bei Raspbian gut damit, den Root-Account deaktiviert zu lassen und das System ausschließlich als Benutzer "pi" mit Hilfe von "sudo" oder "su" zu administrieren. Es gibt allerdings Gründe, für den Benutzer "root" ein Passwort anzulegen und damit den Root-Account zu aktivieren. Beispielsweise dann, wenn nicht-vertrauenswürdige Benutzer Zugang zum Raspberry Pi haben. Die könnten unbemerkt den Root-Account aktivieren und weiteren Unfug treiben.
Deshalb gilt, wenn der Raspberry Pi als Multi-User-Umgebung benutzt wird, sollte der Root-Account aktiviert werden.

Das Aktivieren des Root-Accounts erfolgt dadurch, dass wir dem Benutzer "root" ein Passwort geben.

sudo su
passwd

Hinweis: Wenn man den Root-Account aktiviert, dann wird dadurch auch der Root-Zugang per SSH aktiviert. Das ist natürlich abhängig von der SSH-Server-Konfiguration. Aus Sicherheitsgründen macht es Sinn, den SSH-Server so zu konfigurieren, dass ein Login per "root" NICHT möglich ist.

Lösung: Root-Rechte für Benutzer nur mit Root-Passwort

Wir möchten, dass ein Benutzer wie gewohnt mit dem Kommandozusatz "sudo" Root-Rechte erlangen kann. Bei Verwendung von "sudo" soll zusätzlich das Root-Passwort abgefragt werden und somit eine doppelte Sicherheit hergestellt werden.
Ein Benutzer soll "sudo" also nur dann verwenden können, wenn er das Root-Passwort kennt. Dazu müssen wir sicherstellen, dass der Root-Account aktiviert ist, also dass "root" ein Passwort hat.

Als Benutzer "pi" kann man sich mit "su" zum Benutzer "root" machen.

sudo su

Wenn an dieser Stelle NICHT nach dem Root-Passwort gefragt wird, dann ist auch keines eingerichtet. Das sollte man an der Stelle nachholen.

passwd

Nach dem man das Passwort und die Bestätigung eingegeben hat, verlässt man "root".

exit

Anschließend versucht man es noch einmal.

sudo su

Jetzt lässt uns "su" erst dann zu "root" werden, wenn das Root-Passwort richtig eingegeben wurde. Anschließend kann man als "root" alle Kommandos ohne "sudo" eingeben.

Als "root" fügen wir "pi" zuerst der Benutzergruppe "sudo" hinzu, sofern der Benutzer "pi" nicht bereits zugeordnet ist.

gpasswd -a pi sudo

Anschließend fügen wir einen Parameter in der sudo-Benutzersteuerung (Sudoers) hinzu.

visudo

Hier fügt man folgende Zeile ein:

Defaults        rootpw

Diese Einstellung sorgt dafür, dass bei Nutzung von "sudo" nicht das Benutzer-Passwort, sondern das Root-Passwort abgefragt wird.
Nach der Änderung die Datei speichern und schließen: Strg + O, Return, Strg + X.

Anschließend verlässt man den Benutzer "root".

exit

Hinweis: Die zusätzliche Abfrage des Root-Passworts ist natürlich nur sinnvoll, wenn dieses Passwort vom eigentlichen Benutzer-Passwort abweicht. Sind beide identisch, würde ein aktivierter Root-Account überhaupt keinen Sinn machen und wäre auch nicht sicher.

Lösung: Root-Account deaktiveren

Folgendermaßen bringt man den Root-Account wieder in den "deaktivierten" Zustand.

Zuerst muss man aber "Defaults rootpw" per "visudo" entfernen. Wenn das noch drin steht, wenn man das Root-Passwort löscht, dann kann man als normaler Nutzer kein "sudo" mehr nutzen. Und Anmelden als "root" geht unter Umständen auch nicht mehr.
Erst wenn man sichergestellt hat, dass "sudo" nicht mehr nach dem Root-Passwort fragt, dann darf man das Root-Passwort löschen.

sudo passwd -d root

Hinweis: Unterschied zwischen "sudo" oder "su"?

Mit Hilfe von "sudo" kann man Kommandos mit den Rechten eines jeden Benutzers ausführen. In der Regel benutzt man "sudo", um Kommandos mit den Rechten von "root" auszuführen.

Mit Hilfe von "su" wechselt man zu einem beliebigen Benutzer, um anschließend mit dessen Rechte zu arbeiten. In der Regel wechselt man mit "sudo su" zu "root", um Kommandos mit dessen Rechte auszuführen.

Der Unterschied hängt davon ab, ob man einmalig mit "sudo" ein Kommando mit den Rechten eines anderen Nutzers ausführen möchte, oder ob man mit "su" zu einem anderen Nutzer wechselt und alle darauf folgenden Kommandos mit dessen Rechten ausführt. Selbstverständlich kann man auch mit "sudo" alle Kommandos mit den Rechten eines anderen Nutzers ausführen. Das wechseln des Benutzers mit "su" ist aber häufig bequemer, weil man dann auf "sudo" verzichten kann.

Erweiterungen

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!