noisefloor schrieb:
Es ist ungünstig, diese beiden Optionen in einem gemeinsamen Satz zu erklären, denn sie machen etwas völlig unterschiedliches:
Ja, aber auf den Hintergrund wird an der Stelle nicht eingegangen. Formell ist der Satz richtig. Es gab vorher aber einen Fehler im Artikel diesbzgl., der jetzt korrigiert ist.
--uid ohne --user richtet den Befehl an die für das System zuständige Instanz von systemd, welche als root läuft und daher auch vom aufrufenden Benutzer Root-Rechte erwartet, führt dann aber den auszuführenden Befehl als der per --uid benannte Benutzer und natürlich mit dessen Rechten aus.
Das sehe ich anders, siehe https://manpages.ubuntu.com/manpages/jammy/man5/systemd.exec.5.html 🇬🇧
Was meinst Du? Diese Manpage erklärt überhaupt keine Aufrufoption eines Programms aus der Familie von systemd, und insbesondere auch nicht die Optionen --user
und --system
(Vorgabe, wenn --user
nicht angegeben wird), sondern nur spezielle Direktiven für Units.
Die Optionen --user
und --system
werden z.B. in der Manpage für systemctl erklärt.
Leider stimmt die Erwartung „die nicht von der aufrufenden Shell erbt“ nicht, denn die Root-Shell hat dasselbe Arbeitsverzeichnis wie die aufrufende Shell!
-S
impliziert die Option -d
. Kann man sich jetzt drüber streiten, ob das unter "Vererbung" fällt oder nicht.
Ob es durch Vererbung zustande kommt oder nicht, lohnt keinen Streit. Mir kommt es nur auf das Ergebnis an: Das Arbeitsverzeichnis wird nicht verändert. Wenn es vorher /home/$USER war, wird das auch für die gestartete Root-Shell so sein. Das ist für den praktischen Gebrauch einer Root-Shell wichtig zu beachten. Es wird zwar im Prompt angezeigt, aber wer liest den schon?
Und damit wird eine der von sudo GUI missachteten Vorsichtsmaßnahmen leider auch von systemd-run nicht beachtet.
Na dann go for it: Link zum Bugtracker 🇬🇧 von systemd.
Ich sehe es durchaus nicht als BUG von systemd-run
an, sondern die Erwartungshaltung des Benutzers wird nicht erfüllt: Die Isolation ist nicht vollständig und sie kann es auch gar nicht sein, solange man in der Root-Shell auf das System einwirken können will.
Jedenfalls ist eine Root-Shell per systemd-run
zwar ein wenig anders gefährlich als eine Root-Shell per sudo
, aber keinesfalls ungefährlich. Was nicht an systemd-run
liegt, sondern weil eine Root-Shell nun mal eine Shell für den Benutzer root ist.