Setuid

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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.

Setzen des SUID-Bits[Bearbeiten]

Mit Dateibrowsern kann das Bit per Klick gesetzt werden

Mit klassischen Unix-Kommandos wie chmod kann das Bit mit einem Aufruf wie

chmod u+s objekt

gesetzt werden, wobei objekt für mindestens eine Datei bzw. Verzeichnis steht.

Auch moderne grafische Dateimanager bieten Möglichkeiten, das Bit grafisch per Checkbox zu aktivieren/deaktivieren.

Vor- und Nachteile[Bearbeiten]

Vorteil dieses Vorgehens ist seine Einfachheit. Im Kernel 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[Bearbeiten]

Unix-Programme, für die das setuid-Bit zur korrekten Funktion gesetzt sein muss, sind zum Beispiel su sowie sudo, welche mit den ihnen damit zur Verfügung stehenden Root-Rechten den zu startenden Prozess unter einer anderen Benutzerumgebung starten. Auch mount und sein Pendant umount 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[Bearbeiten]