Wie man Run0 in Linux verwendet

Run0 ist ein neues und innovatives Programm zur Erhöhung von Rechten für Systemd-basierte Linux-Distributionen. Es bietet eine leichte und “konfigurationslose” Alternative zu traditionellen Escalation-Apps wie sudo und doas. Hier zeigen wir Ihnen die Grundlagen der Verwendung von Run0, um Befehle für Ihr Linux-System zu eskalieren.
Inhaltsverzeichnis
- Wie man Programme als ein anderer Benutzer ausführt
- Wie man zur Shell eines anderen Benutzers wechselt
- Wie man die aktuelle Run0-Sitzung anpasst
- Wie man Run0-Sitzungen gruppiert
- Wie man Befehle in Systemd-Containern mit Run0 ausführt
Davor möchten Sie vielleicht herausfinden, was Run0 ist und wie es sich von sudo unterscheidet.
Wie man Programme als ein anderer Benutzer ausführt
Eine der häufigsten Anwendungen von Privilegien-Eskalations-Apps ist das Ausführen von Befehlen als Root-Benutzer. In dieser Hinsicht erfordert das Anzapfen des Root-Benutzers in Run0, dass Sie run0 vor den Befehl setzen, den Sie ausführen möchten. Zum Beispiel erstellt der folgende Befehl einen neuen Ordner in einem Verzeichnis, das nur für Root zugänglich ist:
run0 mkdir/etc/maketecheasierDies wird entweder eine CLI-Passwortaufforderung oder ein kleines GUI-Fenster anzeigen, das nach dem Passwort Ihres aktuellen Benutzers fragt.

Ähnlich wie sudo und doas kann Run0 auch zu einem Nicht-Root-Benutzer wechseln, wenn Befehle ausgeführt werden. Um dies zu tun, fügen Sie das --user-Flag gefolgt vom Namen des Benutzers hinzu, unter dem Sie den Befehl ausführen möchten:
run0 --user=alice /home/alice/alice-program.shGeben Sie das Passwort für den Benutzer ein, zu dem Sie wechseln, und drücken Sie dann die Eingabetaste.
Wie man zur Shell eines anderen Benutzers wechselt
Ein weiterer wichtiger Teil einer Privilegien-Eskalations-App ist die Fähigkeit, den Benutzer zu einer Root-Shell zu bringen. Dies gibt Ihnen die Möglichkeit, mit Ihrem System als Root-Benutzer zu interagieren und komplexere Befehle von der CLI aus auszuführen.
In Run0 können Sie dies tun, indem Sie das Programm ohne zusätzliche Argumente ausführen.
Genau wie beim Ausführen von Programmen als Root ist es auch möglich, Run0 mit dem --user-Flag zu verwenden, um eine Shell-Sitzung als spezifischer Benutzer zu starten:
run0 --user=aliceDarüber hinaus ermöglicht es run0, Shell-Sitzungen mit temporären Gruppenberechtigungen für Nicht-Root-Benutzer zu erstellen. Dies ist nützlich, wenn Sie auf Ordner zugreifen möchten, die hinter einem bestimmten Benutzer und einer bestimmten Gruppe gesperrt sind, ohne zu Root zu wechseln.
Zum Beispiel gewährt der folgende Befehl dem Benutzer “alice” temporären Zugriff auf die Gruppe “www-data”:
run0 --user=alice --group=www-dataSie können auch das --chdir-Flag verwenden, um einen Verzeichniswechsel zu erzwingen, wenn Sie zu einer neuen Shell-Sitzung wechseln:
run0 --user=alice --chdir=/home/alice/DocumentsGut zu wissen: Erfahren Sie mehr über Ihren Linux-Rechner, indem Sie erkunden, wie Sie die Dateiberechtigungen in Ihrem Dateisystem rekursiv ändern.
Wie man die aktuelle Run0-Sitzung anpasst
Der größte Verkaufsargument von Run0 ist, dass es kein setuid (SUID) verwendet, um Superuser-Aktionen zu handhaben. Stattdessen verlässt es sich auf systemd-run, das isolierte Pseudo-TTYs für das Ausführen von Befehlen als Root erstellt.
Eine Konsequenz dieses Ansatzes ist, dass Systemd jede Run0-Shell als eine diskrete Einheit behandelt, die unter dem Dienstmanager läuft. Dies ermöglicht es Ihnen, Ihren Root-Shell-Prozess anzupassen, im Gegensatz zu traditionellen Privilegien-Eskalations-Apps.
Um ein Label für Ihre Root-Shell hinzuzufügen, verwenden Sie das --unit-Flag gefolgt vom Namen, den Sie verwenden möchten:
run0 --unit=maketecheasierSie können auch eine benutzerdefinierte Beschreibung für Ihre Root-Shell hinzufügen, indem Sie das --description-Flag hinzufügen:
run0 --unit=maketecheasier --description="Hallo, Welt!"Überprüfen Sie, ob Sie Ihre Details korrekt angewendet haben, indem Sie den benutzerdefinierten Namen Ihrer Root-Shell mit systemctl auflisten:
systemctl list-units maketecheasier.service
Standardmäßig ändert Run0 die Farbe des Hintergrunds Ihrer Root-Shell auf Rot. Während dies ein hilfreicher visueller Indikator ist, kann dies ablenkend sein, wenn Sie ein helles Thema auf Ihrem System verwenden.
Um dies zu ändern, verwenden Sie das --background-Flag gefolgt von einem Wert zwischen 40-49:
run0 --unit=maketecheasier --background=42Schließlich können Sie auch die „Nettigkeitsstufe“ Ihrer Root-Shell anpassen. Dies ist ein Wert zwischen -20 und 19, der bestimmt, ob Ihr Kernel Ihren Prozess gegenüber anderen priorisieren wird.
Um Ihrer Root-Shell die höchste Priorität zu geben, verwenden Sie das --nice-Flag mit dem Wert „-20“:
run0 --nice=-20Hinweis: Das --nice-Flag funktioniert auch für einzelne Run0-Befehle. Zum Beispiel können Sie run0 --nice=-20 vim verwenden, um Vim mit einer höheren CPU-Priorität auszuführen.
Wie man Run0-Sitzungen gruppiert
Neben der Möglichkeit, jede Linux-Root-Shell anzupassen, können Sie Run0 auch verwenden, um sie in einem Systemd-Slice zusammenzufassen. Dies ist ein spezielles Konstrukt, das es Ihrem Rechner ermöglicht, die Ressourcennachfrage für Prozesse anzupassen, ohne den Rest Ihres Systems zu beeinträchtigen.
Um eine Root-Shell in einem anderen Slice zu erstellen, führen Sie das --slice-Flag gefolgt vom Namen des Slices aus, zu dem Sie wechseln möchten:
run0 --slice=maketecheasierHinweis: Sie können einen neuen Namen im --slice-Flag angeben, um einen neuen Systemd-Slice zu erstellen.
Bestätigen Sie, dass Ihre neue Sitzung unter Ihrem neuen Slice läuft, indem Sie die Prozesse darin auflisten:
systemctl status maketecheasier.slice
Sie können auch das --slice-inherit-Flag verwenden, um Ihren neuen Slice zusammen mit dem Slice, aus dem Run0 stammt, zu gruppieren. Dies ist nützlich, wenn Sie Ihre Shells bereits in ihre jeweiligen Slices gruppiert haben und einfach eine neue Shell hinzufügen möchten:
run0 --slice=maketecheasier --slice-inheritWie man Befehle in Systemd-Containern mit Run0 ausführt
Systemd-nspawn ist ein spezielles Programm, das leichte Linux-Container ähnlich wie Docker erstellen und verwalten kann. Als Teil der Systemd-Suite können Sie auch Run0 verwenden, um Befehle in Ihren nspawn-Containern von Ihrem Host-Rechner aus auszuführen.
Beginnen Sie damit, die verfügbaren Systemd-nspawn-Container in Ihrem System aufzulisten:
machinectl list
Führen Sie den folgenden Befehl aus, um einen Ordner im Stammverzeichnis Ihres Containers zu erstellen:
run0 run0 --machine=maketecheasier --user=root mkdir/hello-worldHinweis: Derzeit gibt es einen Fehler in Run0, bei dem es nicht gelingt, die Berechtigungen zu erhöhen, wenn es mit dem --machine-Flag ausgeführt wird. Sie können dies beheben, indem Sie einen zweiten Run0-Befehl hinzufügen, um eine Berechtigungseskalation zu erzwingen.
Es ist auch möglich, zu Ihrer Container-Root-Shell mit Run0 zu wechseln:
run0 run0 --machine=maketecheasier --user=rootBestätigen Sie, dass Sie jetzt in Ihrem Container arbeiten, indem Sie den Hostnamen Ihrer Terminal-Sitzung ausgeben:
echo$HOSTNAME
Zu lernen, wie man Run0 verwendet, um Root-Befehle in Linux auszuführen und zu verwalten, ist nur die Spitze des Eisbergs, wenn es um Privilegien-Eskalations-Apps geht. Tauchen Sie tief in die komplexe Welt ein, indem Sie die Unterschiede zwischen su, sudo und sudo -s betrachten.
Bildnachweis: Xavier Cee über Unsplash. Alle Änderungen und Screenshots von Ramces Red.