setgid(2) setzt die Gruppenidentität (GID)

ÜBERSICHT

#include <sys/types.h>
#include <unistd.h>

int setgid(gid_t gid);

BESCHREIBUNG

setgid() setzt die effektive Gruppen-ID des aufrufenden Prozesses. Wird diese Funktion durch den Superuser (mit der CAP_SETGID-Capability) aufgerufen, werden auch die reale und die gesicherte Gruppen-ID gesetzt.

Unter Linux ist setgid() wie die POSIX-Version mit dem _POSIX_SAVED_IDS-Merkmal implementiert. Das ermöglicht einem setgid-Programm, das nicht vom Superuser aufgerufen wurde, alle seine Gruppenprivilegien abzugeben, einige nicht privilegierte Arbeiten zu erledigen und dann auf sichere Art und Weise weiter die ursprüngliche effektive Gruppen-ID zu nutzen.

RÜCKGABEWERT

Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

EINVAL
Die in gid angegebene Gruppen-ID ist in diesem Benutzer-Namensraum unzulässig.
EPERM
Der aufrufende Prozess ist nicht privilegiert (verfügt nicht über die CAP_SETGID-Capability) und gid entspricht nicht der realen Gruppen-ID oder der gespeicherten »set-group«-ID des aufrufenden Prozesses.

KONFORM ZU

POSIX.1-2001, POSIX.1-2008, SVr4.

ANMERKUNGEN

Der ursprüngliche setgid()-Systemaufruf unterstützte nur 16-Bit-Gruppen-IDs. Danach führte Linux 2.4 mit setgid32() die Unterstützung für 32-Bit-IDs hinzu. Die Glibc-Wrapperfunktion setgid() behandelt die Unterschiede zwischen den Kernel-Versionen transparent.

Unterschiede C-Bibliothek/Kernel

Auf der Kernelebene sind Benutzer- und Gruppenkennungen Attribute pro Thread. POSIX verlangt aber, dass sich alle Threads in einem Prozess die gleichen Berechtigungsnachweise teilen. Die NPTL-Threading-Implementierung behandelt die POSIX-Anforderungen durch Bereitstellung von Wrapper-Funktionen für die verschiedenen Systemaufrufe, die die UIDs und GIDs der Prozesse ändern. Diese Wrapper-Funktionen (darunter die für setgid()) verwenden eine signalbasierte Technik, um sicherzustellen, dass bei der Änderung der Berechtigungsnachweise eines Threads auch alle anderen Threads des Prozesses ihre Berechtigungsnachweise ändern. Für Details siehe nptl(7).

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Stefan Janke <[email protected]>, Martin Eberhard Schauer <[email protected]> und Mario Blättermann <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.