Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
Bild Run as Root

Programme mit Root-Rechten als normaler Benutzer ausführen

Unter Linux ist der Zugriff auf Systemressourcen standardmäßig auf privilegierte Benutzer (meist root) beschränkt. Dennoch gibt es legitime Anwendungsfälle, in denen normale Benutzer bestimmte Programme mit erweiterten Rechten ausführen müssen – etwa um Netzwerkpakete zu sniffen, Systemdienste zu steuern oder Geräte direkt anzusprechen.

In diesem Artikel zeigen wir sichere und etablierte Methoden, wie dies möglich ist – ohne vollständigen Root-Zugriff zu gewähren.

1. Gezielte Rechtevergabe über /etc/sudoers

Die klassische Methode zur Ausführung von Programmen mit Root-Rechten durch normale Benutzer ist die Konfiguration der Datei /etc/sudoers. Damit kann einzelnen Benutzern oder Gruppen der Zugriff auf spezifische Befehle erlaubt werden – ohne vollständigen Root-Zugang.

Beispiel: Ein Benutzer soll tcpdump mit Root-Rechten ausführen dürfen, ohne ein Passwort eingeben zu müssen:

username ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump

Dieser Eintrag wird am sichersten mit dem Befehl visudo vorgenommen, um Syntaxfehler zu vermeiden.

Anschließend kann der Benutzer tcpdump wie folgt ausführen:

sudo /usr/sbin/tcpdump

2. Linux Capabilities: Feingranulare Rechtevergabe

Seit neueren Kernel-Versionen unterstützt Linux sogenannte Capabilities, die es ermöglichen, bestimmten Programmen ausgewählte Root-Rechte zuzuweisen – ohne vollständige Root-Privilegien.

Beispiel: Damit ein Benutzer das ping-Programm (das ICMP-Pakete versendet) ohne sudo verwenden kann, genügt:

sudo setcap cap_net_raw+ep /bin/ping

Diese Capability erlaubt es dem Programm, rohe Netzwerkpakete zu versenden. Der Benutzer kann danach einfach ping verwenden, ohne Root zu sein.

Weitere nützliche Capabilities

  • cap_net_bind_service: Öffnen von Ports unter 1024 (z. B. für eigene Webserver)
  • cap_sys_time: Ändern der Systemzeit
  • cap_dac_override: Ignorieren von Dateisystemberechtigungen (Vorsicht!)
  • cap_sys_admin: Sehr mächtige Admin-Rechte, fast gleichbedeutend mit Root

Um gesetzte Capabilities zu überprüfen:

getcap /bin/ping

3. PolicyKit (polkit): Rechteverwaltung für Systemdienste

PolicyKit (heute oft als polkit bezeichnet) ist ein Framework zur Rechtevergabe auf höherer Ebene, insbesondere für Desktop-Umgebungen und D-Bus-basierte Dienste wie den NetworkManager, udisks oder systemd.

Über Polkit können z. B. Mitglieder einer bestimmten Benutzergruppe Aktionen wie das Herunterfahren des Systems, Einhängen von Laufwerken oder Ändern von Netzwerkeinstellungen erlaubnisfrei durchführen.

Beispielhafte Regeldatei unter /etc/polkit-1/rules.d/10-network.rules:

polkit.addRule(function(action, subject) {
  if (action.id == "org.freedesktop.network-manager.settings.modify.system" &&
      subject.isInGroup("networkadmins")) {
    return polkit.Result.YES;
  }
});

In diesem Beispiel dürfen alle Benutzer der Gruppe networkadmins Netzwerkkonfigurationen ändern, ohne Root-Rechte oder Passwortabfrage.

4. Das Setuid-Bit: Veraltete Methode mit hohem Risiko

Eine ältere Methode, Programmen dauerhaft Root-Rechte zu verleihen, ist das Setzen des sogenannten Setuid-Bits. Damit wird ein Programm immer mit den Rechten seines Eigentümers (oft Root) gestartet – unabhängig davon, welcher Benutzer es ausführt.

Beispiel:

sudo chown root:root /pfad/zu/programm
sudo chmod u+s /pfad/zu/programm

Das klingt zunächst praktisch – ist aber hochriskant. Viele Distributionen ignorieren das Setuid-Bit bei Skripten vollständig, und Programme mit Setuid-Root-Status stellen ein beliebtes Ziel für Exploits dar.

Empfehlung: Verzichte möglichst auf das Setuid-Verfahren – insbesondere bei selbst geschriebenen oder weniger geprüften Programmen.

Fazit

Für Administratoren gibt es verschiedene Wege, bestimmten Benutzern die Ausführung von Programmen mit erweiterten Rechten zu ermöglichen. Während der klassische Weg über sudo nach wie vor sinnvoll ist, bieten moderne Methoden wie Linux Capabilities oder Polkit oft bessere Sicherheit bei gleichzeitig höherer Flexibilität.

Die Wahl der richtigen Methode hängt vom Einsatzzweck, der Sicherheitsanforderung und dem Systemkontext (Server vs. Desktop) ab.

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.