Systemd Logo

Wie benutzt man run0 anstelle von sudo?

Vor einigen Wochen stellten wir run0 vor, eine neue Funktion von systemd 256. run0 kann anstelle von sudo unprivilegierten Usern temporär erlauben, Programme und Befehle mit Root-Rechten auszuführen.

Der herausragende Vorteil von run0 ist, dass es im Gegensatz zu sudo kein SUID verwendet, um Root-Aktionen durchzuführen. Ein Fehler in einer SUID-befähigten Anwendung kann leicht das gesamte System gefährden. Stattdessen greift run0 auf systemd-run zurück, das jeweils eine temporäre Service-Unit in einem isolierten pseudo-TTYs für die Ausführung von Befehlen als root erstellt. Durch den Rückgriff auf systemd-run benötigt run0 keine Konfigurationsdatei. Lennart Poettering beschreibt run0 als näher am SSH-Befehl als an sudo.

Anwendung

Die Anwendung von run0 ist einfach und bietet einige interessante Parameter. Grundvoraussetzung ist systemd 256. Ist das gegeben, öffnet die Eingabe von run0 auf der Befehlszeile ein Fenster von PolKit mit der Abfrage des Root-Passworts.

Wird hier das Passwort falsch eingegeben oder der Vorgang abgebrochen, so werden wir informiert, dass die temporäre Service-Unit nicht gestartet werden konnte. Damit bleibt der User unprivilegiert.

Wie man im ersten Screenshot sehen kann, wird der Root-Kontext bei run0 rot eingefärbt. Wem das nicht gefällt, der kann eine andere Farbe oder keine Farbe erzwingen:

Die von run0 erstellten Service-Units erhalten zufällige, kryptische Bezeichnungen. Eine nützliche Funktionalität von run0 ist, dass wir diese Units beim Erstellen beliebig benennen können. Laufen beispielsweise mehrere Befehle, deren Output wir periodisch anschauen müssen oder die länger zur Ausführung benötigen, können wir ihnen zur besseren Unterscheidung einen aussagekräftigen Namen und eine eigene Farbe zuordnen.

Mit run0 --chdir /etc lässt sich das Arbeitsverzeichnis wechseln, nice-Level ändert man mit run0 --nice. Alle weiteren Parameter hält die Manpage bereit.

Teilt den Beitrag, falls ihr mögt

13 Kommentare

  1. Ich kann nur hoffen, dass systemd irgendwann auf dem “Müllhaufen der schlechten Linux-Ideen” landet. Die Ressourcen hätte man andersweitig sinnvoller investieren können! Zum Glück halten ein paar Distributionen dem allgemeinen Druck stand und “echte” Init-Systeme am Leben!

    1
  2. Die Idee von run0 mag ja ganz schön sein – dass das Ganze aber über Polkit läuft und das Passwort nicht im Terminal sondern per extra Fenster abfragt finde ich allerdings extrem unschön.

    Und wenn ich die Konfiguration in /usr/share/polkit-1/rules.d bzw /etc/polkit-1/rules.d mit der in /etc/sudoers bzw sudoers.d vergleiche, dann weiß ich auch sofort, welche komfortabler/einfacher ist 😉

    0
  3. Ich selber nutze in meinem produktiv System zwar kein Systemd, halte die Entwicklung aber trotzdem für bedenklich.🙄
    Schon jetzt wird es immer schwieriger Programm zu finden, die ohne das man frickeln muss, in einem System ohne systemd problemlos laufen.

    Immer mehr von einem System abhängig zu machen, dessen Hauptentwickler schon immer ein Bekenner MS Fan war, und jetzt auch für diese Firma arbeitet, halte ich für sehr bedenklich.

    Der unterschied von run0 ist wirklich nur die SUID.
    Und sudo hat bis jetzt immer trotzdem hervorragend funktioniert.

    Hier wird wieder versucht, ein Problem zu beheben, was überhaupt nicht existiert.

    Daher werde ich solang es geht ohne systemd arbeiten.
    Und wenn es irgendwann Linux so verseucht hat, das es es nicht mehr ohne geht, werde ich halt auf ein anderes BS wechseln!. (BSD, Haiku oder was es dann noch so gibt)

    17
    1. … Und sudo hat bis jetzt immer trotzdem hervorragend funktioniert. …

      Ich habe sudo nie verwendet. Habe ich etwas verpasst? Wenn ich root-Arbeiten mache, dann mache ich diese als root. sudo ist mir eigentlich nur von Ubuntu-Rechnern bekannt (die ich nicht verwende).

      6
      1. Sudo musst du in vielen Distributionen erstmal einrichten. Beim Arbeiten als root, hast Du die Privilegien während der ganzen Sitzung, solltest also ganz genau wissen was Du tust und auch keine Flüchtigkeitsfehler begehen. Den Fortschritt durch run0 habe ich selbst noch nicht verstanden. Zumal ich das Thema systemd selbst nicht ganz durchdringe und daher ein Herz für die Skeptiker habe. Aktuell setze ich es ein, denn wenn ich alles ablehnen würde, was ich nicht verstehe, käme ich nicht weit. Manchmal genügt mir jedoch das ansatzweise Verständnis um etwas zu befürworten oder abzulehnen.

        3
          1. Vielen Dank für den Link!
            Sollte man {run0}, mit Blick auf dessen Einsatz, nicht besser mit dem Befehl {su} vergleichen? Zumindest suggeriert der Artikel, dass {run0} das root-Passwort benötigt. Bei {sudo} wird hingegen das Passwort des Users benötigt. Darüber hinaus kann man bei {sudo} auch die Befehle einschränken, die man mittels {sudo} ausführen kann.

            1
              1. Stimmt grundsätzlich, gilt aber nicht für alle Distros.
                OpenSuse (IIRC) hat in der /etc/sudoers z.B.

                Defaults TargetPw
                

                womit man dann das PW des Users angegeben werden muss, der das Kommando ausführt.
                Hintergrund dafür wurde so erklärt: Falls das Userpasswort erraten wurde, wäre ein Angreifer dann gezwungen, für administrative Rechte ein weiteres PW zu kennen.

                0
        1. O.K., für mich sollte es einfach und übersichtlich sein. “Zum root werden”, ist für mich seit ca. 23 Jahren tägliche Rou­ti­ne. Danke für dein “Herz für die Skeptiker”, zu denen ich wahrscheinlich auch gehöre. Vielleicht liegt meine Skepsis auch daran, alte eingeübte und bewährte Wege nicht verlassen zu wollen. Aber ein System sollte nach meiner Ansicht auch für nicht spezialisierte Anwender halbwegs durchsichtig sein. Die Gefahr, dass ich etwas ungewolltes einschleicht, ist sonst zu groß.

          5
  4. Klingt ja schon mal praktisch das ganze. Da ich Debian Stable benutze, muss ich mich noch etwas gedulden… Aber wo definiere ich, wer “run0” überhaupt aufrufen darf und im welchen Umfang man das darf (Welche Befehle, etc.)?

    11
  5. Doofe Frage, kann man run0 auch einsetzten wenn der User root deaktiviert ist oder kein Passwort hat?
    Für mich scheint run0 einfach nur eine Losgelöste Session zu eröffnen und mehr nicht. Also nicht wirklich ein Ersatz für sudo.

    9

Kommentar hinterlassen