Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

setregid - reale und effektive Gruppennummer setzen

&pagelevel(4)&pagelevel

Definition

#include <unistd.h>

int setregid(gid_t rgid, grid_t egid);

Beschreibung

setregid() wird verwendet, um die reale und die effektive Gruppennummer des aufrufenden Prozesses zu setzen. Wenn rgid gleich -1 ist, wird die reale Gruppennummer (GID) nicht geändert; wenn egid gleich -1 ist, wird die effektive GID nicht geändert. Die reale und die effektive GID können im selben Aufruf auf verschiedene Werte gesetzt werden.

Entspricht die effektive Benutzernummer des aufrufenden Prozesses dem Superuser, können die reale GID und die effektive GID auf jeden zulässigen Wert gesetzt werden.

Entspricht die effektive Benutzernummer des aufrufenden Prozesses nicht dem Superuser, kann entweder die reale GID auf die gesicherte „set-GID“ aus execv gesetzt werden, oder die effektive GID kann entweder auf die gesicherte „set-GID“ oder auf die reale GID gesetzt werden.

Wenn ein Prozess zum Setzen der GID seine effektive GID auf seine reale GID setzt, kann er seine effektive GID immer noch auf die gesicherte „set-GID“ zurücksetzen.

Sowohl bei einer Änderung der realen GID (d. h. wenn rgid nicht gleich -1 ist) als auch bei der Änderung der effektiven GID in einen Wert, der nicht der realen GID entspricht, wird die gesicherte „set-GID“ mit der neuen effektiven GID gleichgesetzt.

Wird der aktuelle Wert der realen GID geändert, wird der alte Wert aus der Gruppenzugriffsliste gelöscht (siehe getgroups()), sofern er in dieser Liste eingetragen ist, und der neue Wert wird in die Gruppenzugriffsliste aufgenommen, wenn er nicht bereits existiert und wenn hierdurch nicht die Anzahl der Gruppen in dieser Liste NGROUPS überschreitet, wie in der Datei /usr/include/sys/param.h definiert.

Returnwert

0

bei Erfolg.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen

Fehler

setregid() schlägt fehl, wenn gilt: 

 

EINVAL

Der Wert von rgid oder egid ist ungültig oder außerhalb des Wertebereiches.

 

EPERM

Die effektive Benutzernummer des aufrufenden Prozesses entspricht nicht der des Superuser, und es wurde eine andere Änderung als die Änderung der realen GID in die gesicherte „set-GID“ oder der effektiven GID in die reale oder die gesicherte GID angegeben.

Siehe auch

exec(), getuid(), setuid(), setreuid(), unistd.h.