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 zusĂ€tzlich zu den Rechten desjenigen Benutzers, der die Datei ausfĂŒhrt, auch mit den Rechten des Benutzers ausgefĂŒhrt, dem die Datei gehört (das heiĂt mit den Rechten des Besitzers der Datei, des âOwnersâ). 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 | Quelltext bearbeiten]
Mit klassischen Unix-Kommandos wie chmod kann das Bit mit einem Aufruf wie
chmod u+s datei
gesetzt werden, wobei datei fĂŒr mindestens eine Datei bzw. Verzeichnis steht.
Die Rechte zeigt ein ls dann z. B. folgendermaĂen an:
-rwSrwxrwx user group datei- Ein groĂes âSâ reprĂ€sentiert hierbei das reine SUID-Bit, ohne execute Bit. Ist auch das execute Bit gesetzt wird ein kleines âsâ angezeigt. Das execute Bit kann ĂŒber
chmod u+x datei- gesetzt werden.
Auch moderne grafische Dateimanager bieten Möglichkeiten, das Bit grafisch per Checkbox zu aktivieren/deaktivieren.
Vor- und Nachteile
[Bearbeiten | Quelltext 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 | Quelltext 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 wird meist anhand von Konfigurationsdateien gefĂ€llt, die von normalen Benutzern nicht bearbeitet werden können.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]- Unix-Dateirechte
- Access Control List
- Weitere erweiterte Dateirechte: Setgid, Sticky Bit