Wie Setuid es Benutzern ermöglicht, Dateien mit erhöhten Rechten auszuführen

Wenn Sie eine ausführbare Datei in Linux ausführen, wird sie normalerweise mit der aktuellen Benutzer- und Gruppen-ID ausgeführt. Es gibt jedoch Zeiten, in denen Sie diese Datei als ein anderer Benutzer (wie root) ausführen müssen. Anstatt Ihr Benutzerkonto zu wechseln, können Sie setuid verwenden, um die ausführbare Datei als Eigentümer der Datei und nicht als aktuellen Benutzer auszuführen. Hier erklären wir, wie setuid funktioniert und wie es Benutzern ermöglicht, ausführbare Dateien/Binärdateien mit erhöhten Rechten auszuführen.
Wie funktioniert setuid?
Setuid steht für SET User ID bei Ausführung. Angenommen, wir haben eine ausführbare Datei namens „identity“, die vom root-Benutzer erstellt wurde. Wenn Sie sie ausführen, wird sie mit Ihrer Benutzer-ID, Gruppen-ID und Benutzerrechten ausgeführt. Wenn das setuid-Bit auf der Datei „identity“ gesetzt ist, wird sie, wenn Sie sie ausführen, als root-Benutzer und mit dessen Benutzerrechten ausgeführt.
Zur Veranschaulichung können wir zunächst den Besitz der Datei „identity“ überprüfen und bestätigen, dass sie dem root-Benutzer gehört. Die Berechtigungszeichenfolge zeigt auch die ausführbaren (x) Bits, die für den Benutzer, die Gruppe und andere gesetzt sind.
Der Benutzer „john1“ führt die Datei „identity“ aus, die beim Ausführen zu einem Prozess wird. Wie in der Prozessliste gezeigt, wird der Prozess unter dem Benutzernamen und der Benutzer-ID „john1“ erstellt und ausgeführt.

Als nächstes setzen wir als root-Benutzer das setuid-Bit der Datei „identity“:
chmod u+s /usr/bin/identity„u“ bedeutet, dass das setuid-Bit (+s) nur für den Benutzer gesetzt werden muss.
Für den Eigentümer können wir im ausführbaren Teil der Berechtigungszeichenfolge sehen, dass „x“ durch „s“ ersetzt wurde. Immer wenn Sie „s“ für eine ausführbare Datei sehen, bedeutet dies, dass das setuid-Bit darauf gesetzt wurde.
Die numerische Variante des chmod-Befehls kann ebenfalls wie unten gezeigt verwendet werden.
chmod4755/usr/bin/identityDie Hinzufügung von 4 in der numerischen Berechtigungszeichenfolge bedeutet die Einbeziehung des setuid-Bits.
Folgendes passiert, wenn „john1“ die Datei „identity“ erneut ausführt. Wenn wir uns die Liste der laufenden Prozesse ansehen, können wir jetzt sehen, dass der Prozess vom „root“-Benutzer anstelle von „john1“ erstellt und ausgeführt wird.

Wichtige Verwendung des setuid-Bits
Die meisten Experten werden Ihnen sagen, dass Sie Anwendungen nicht als root-Benutzer ausführen sollten. Es gibt jedoch Fälle, in denen bestimmte Dateien mit Root-Rechten ausgeführt werden müssen. Zum Beispiel hat das passwd-Dienstprogramm, das standardmäßig auf Linux-Systemen installiert ist, das setuid-Bit gesetzt.
Der Grund ist einfach: Passwortinformationen für einen Benutzer werden in den Dateien „/etc/passwd“ und „/etc/shadow“ gespeichert, die nur von „root“ geändert werden können. Wenn „john1“ versucht, das Passwort für sich selbst zu ändern, benötigt er die Berechtigung, Informationen in den beiden oben genannten Dateien zu ändern. Das Setzen des setuid-Bits auf passwd ermöglicht es „john1“, vorübergehend Root-Rechte zu haben, um das Benutzerpasswort zu ändern und auch Informationen in den beiden Dateien zu aktualisieren.
Sicherheitsrisiko von Setuid
Wenn Sie nicht vorsichtig sind, kann ein Angreifer setuid-Binärdateien ausnutzen, um Ihr System zu kontrollieren. Benutzer sollten normalerweise keine setuid-Programme installiert haben, insbesondere keine setuid für andere Benutzer als sich selbst. Am wichtigsten ist, dass Sie keine setuid-aktivierte Binärdatei für den root-Benutzer in Ihrem Home-Ordner haben sollten. Diese sind normalerweise Trojanische Pferde oder Malware.
Fazit
Setuid kann nur auf ausführbare Dateien gesetzt werden. Ebenso kann das setgid-Bit gesetzt werden, das es allen Mitgliedern einer Gruppe ermöglicht, eine ausführbare Datei mit den Berechtigungen des Eigentümers auszuführen.
Bitte beachten Sie, dass die Bits setuid und setgid sicherheitsrelevant sind und nur von qualifizierten Systemadministratoren verwendet werden sollten.
Weiterlesen:
- Wie man das Sticky-Bit verwendet, um Dateien in gemeinsamen Verzeichnissen unter Linux zu verwalten
- Wie man Rechtschreibprüfungen im Linux-Terminal durchführt
- Verwendung der Befehle find, locate, which und whereis zur Suche nach Dateien in Linux