setuid setzt die effektive Benutzer-ID des aktuellen Prozesses. Wird diese
Funktion durch den Superuser aufgerufen, so wird die reale und die
gesicherte ID auch gesetzt.
Unter Linux ist
setuid wie unter SYSV mit SAVE_IDS implementiert.
Dieses erlaubt einem setuid-Programm (nicht setuser root) alle
Privilegien des entsprechenden Benutzer abzugeben, um unpriviligierte
Arbeiten zu verrichten, und um danach wieder die orginale effektive
Benutzer-ID zu bekommen, dies erfolgt alles auf eine sichere Art und
Weise.
Wenn der Benutzer root oder das Programm setuid root ist, ist
besondere Sorgfalt notwendig. Die Funktion
setuid überprüft die effektive uid (Benutzer-ID) des Aufrufers und
handelt es sich dabei um den Superuser, so werden alle diesen
Prozeß betreffenden Benutzer-ID auf
uid gesetzt.
Nachdem dies geschehen ist, ist es für das Programm unmöglich,
Superuser-Privilegien wiederzuerlangen.