setgid setzt die effektive Gruppen-ID des aktuellen Prozesses. Wird diese
Funktion durch den Superuser aufgerufen, dann wird auch die reale und
die gesicherte Gruppen-ID gesetzt.
Unter Linux ist
setgid, wie unter SYSV, mit SAVED_IDS implementiert.
Dies erlaubt einem setgid-Programm (für Nicht-Superuser), alle
Gruppenprivilegien abzugeben, einige nichtprivilegierte Arbeiten zu
erledigen und dann, auf sichere Art und Weise, die orginale effektive
Gruppen-ID zurückzuerhalten.
Wenn es sich um den Superuser oder um ein Programm handelt, bei
welchem das Set-GID-Bit auf root gesetzt ist, ist besondere Sorgfalt
notwendig. Die
setgid Funktion überprüft die effektive GID des aufrufenden Prozesses und
wenn es die des Superusers ist, werden alle diesen Prozeß
betreffenden Gruppen-ID's auf
gid gesetzt. Nachdem dies geschehen ist, ist es für das Programm
unmöglich wieder Superuser-Privilegien zu erhalten.