- 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 bewirkt Setuid auf Verzeichnissen, dass darin angelegte Dateien dem Eigentümer des Verzeichnisses gehören und nicht demjenigen Benutzer, der sie anlegt.
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, erlauben aber normalen Benutzern üblicherweise das Ein- und Aushängen von Laufwerken, die in der Datei/etc/fstab
notiert sind.In allen drei 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 für normale Benutzer nicht bearbeitet werden können.
Siehe auch
- Unix-Dateirechte
- Weitere erweiterte Dateirechte: Setgid, Sticky Bit
Wikimedia Foundation.