- Setuid
-
Setuid (Set User ID, manchmal auch suid) ist ein erweitertes Unix-Dateirecht für Dateien oder Verzeichnisse des Unix-Betriebssystems. Ausführbare Programme, bei denen dieses Bit gesetzt ist, werden mit den Rechten des Benutzers ausgeführt dem die Datei gehört, anstatt mit den Rechten desjenigen Benutzers, der die Datei ausführt. Auf den meisten Systemen funktioniert dies nur für ausführbare Binärdateien, nicht jedoch für interpretierte Scripts.
Dieses Vorgehen ermöglicht unprivilegierten Benutzern und Prozessen einen kontrollierten Zugriff auf privilegierte Ressourcen.
Im Falle von FreeBSD oder Debian bewirkt Setuid auf Verzeichnissen, dass darin angelegte Dateien dem Eigentümer des Verzeichnisses gehören und nicht demjenigen Benutzer, der sie anlegt.
Inhaltsverzeichnis
Setzen des SUID-Bits
Mit klassischen Unix-Kommandos wie
chmod
kann das Bit mit einem Aufruf wiechmod u+s objekt
gesetzt werden, wobei objekt für mindestens eine Datei bzw. Verzeichnis steht.
Auch moderne grafische Dateibrowser bieten Möglichkeiten, das Bit grafisch per Checkbox zu aktivieren/deaktivieren.
Vor- und Nachteile
Vorteil dieses Vorgehens ist seine Einfachheit. Im Systemkern muss nur wenig Funktionalität vorhanden sein, um eine große Bandbreite an Zugriffsteuerungen durch externe Programme zu implementieren. Es genügt in vielen Fällen Funktionalität nach „privilegiert“ und „nicht privilegiert“ zu trennen, und die Zugriffsteuerung den setuid-Programmen zu überlassen. Programme können des Weiteren in den Rechten beschnitten werden, wenn das Programm einem eingeschränkten Anwender zugeordnet wird.
Klarer Nachteil ist, dass diese setuid-Programme, die einem höher berechtigten Anwender wie root gehören, aufgrund ihrer Privilegien ein Sicherheitsrisiko darstellen. Ein Fehler in einem dieser Programme kann leicht das ganze System kompromittieren. Sie sind daher auch häufig das Ziel von lokalen Angriffen. Daher werden im Allgemeinen Mechanismen bevorzugt, die ohne setuid auskommen.
Klassische setuid-Programme
Unix-Programme, für die das setuid-Bit zur korrekten Funktion gesetzt sein muss, sind zum Beispiel
su
sowiesudo
, welche mit den ihnen damit zur Verfügung stehenden Root-Rechten den zu startenden Prozess unter einer anderen Benutzerumgebung starten. Auchmount
und sein Pendantumount
benötigen üblicherweise Root-Rechte. Unter Linux wird aber auch normalen Benutzern das Ein- und Aushängen von Laufwerken erlaubt, die in der Datei/etc/fstab
mit der Option user markiert sind.In allen diesen Fällen muss den Dienstprogrammen jeweils die Möglichkeit zur Verfügung stehen, Aktionen mit Root-Rechten auszuführen. Die Entscheidung, ob dies erlaubt sein soll oder nicht, muss allerdings einer privilegierten Instanz obliegen. Sie werden meist anhand von Konfigurationsdateien beschlossen, die von normalen Benutzern nicht bearbeitet werden können.
Siehe auch
- Unix-Dateirechte
- Weitere erweiterte Dateirechte: Setgid, Sticky Bit
Wikimedia Foundation.