.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) .\" and Copyright (C) 2008, 2010, 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified Thu Oct 31 12:04:29 1996 by Eric S. Raymond .\" Modified, 27 May 2004, Michael Kerrisk .\" Added notes on capability requirements .\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN .\" VALUE, made style of page more consistent with man-pages style. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH GETGROUPS 2 "6. März 2019" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG getgroups, setgroups \- abfragen/setzen von zusätzlichen Gruppenkennungen .SH ÜBERSICHT \fB#include \fP .br \fB#include \fP .PP \fBint getgroups(int \fP\fIgroesse\fP\fB, gid_t \fP\fIliste\fP\fB[]);\fP \fB#include \fP .PP \fBint setgroups(size_t \fP\fIgroesse\fP\fB, const gid_t *\fP\fIliste\fP\fB);\fP .PP .RS -4 Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP \fBsetgroups\fP(): Seit Glibc 2.19: _DEFAULT_SOURCE Glibc 2.19 und älter: _BSD_SOURCE .SH BESCHREIBUNG \fBgetgroups\fP() gibt die zusätzlichen Gruppenkennungen des aufrufenden Prozesses in \fIliste\fP zurück. Das Argument \fIgroesse\fP sollte auf die maximale Anzahl der Elemente gesetzt werden, die in dem Puffer gespeichert werden können, auf den \fIliste\fP zeigt. Falls der aufrufende Prozess Mitglied von mehr als \fIgroesse\fP zusätzlichen Gruppen ist, führt dies zu einem Fehler. .PP Es ist nicht beschrieben, ob die effektive Gruppenkennungen des aufrufenden Prozesses in der zurückgegebenen Liste enthalten ist. (Daher sollte eine Anwendung auch \fBgetegid\fP(2) aufrufen und den resultierenden Wert hinzufügen oder entfernen.) .PP Wenn \fIgroesse\fP Null ist, wird \fIliste\fP nicht verändert, es wird aber die Gesamtzahl der zusätzlichen Gruppenkennungen für den Prozess zurückgegeben. Dies erlaubt es dem Aufrufenden, die Größe einer dynamisch reservierten \fIliste\fP festzulegen, die in einem weiteren Aufruf von \fBgetgroups\fP() benutzt wird. .PP \fBsetgroups\fP() setzt die zusätzlichen Gruppenkennungen für den aufrufenden Prozess. Es werden geeignete Privilegien benötigt (siehe die Beschreibung des Fehlers \fBEPERM\fP unten). Das Argument \fIgroesse\fP gibt die Anzahl der zusätzlichen Gruppenkennungen im Puffer an, auf den \fIliste\fP zeigt. Ein Prozess kann sämtliche zusätzliche Gruppen mit folgendem Aufruf abgeben: .PP .in +4n .EX setgroups(0, NULL); .EE .in .SH RÜCKGABEWERT Bei Erfolg gibt \fBgetgroups\fP() die Anzahl der zusätzlichen Gruppenkennungen zurück. Bei aufgetretenem Fehler wird \-1 geliefert und \fIerrno\fP wird entsprechend gesetzt. .PP Bei Erfolg gibt \fBsetgroups\fP() 0 zurück. Bei aufgetretenem Fehler wird \-1 geliefert und \fIerrno\fP wird entsprechend gesetzt. .SH FEHLER .TP \fBEFAULT\fP \fIliste\fP hat eine ungültige Adresse. .PP \fBgetgroups\fP() kann außerdem mit dem folgenden Fehler fehlschlagen: .TP \fBEINVAL\fP \fIgroesse\fP ist kleiner als die Anzahl der zusätzlichen Gruppenkennungen, aber nicht Null. .PP \fBsetgroups\fP() kann überdies mit den folgenden Fehlern fehlschlagen: .TP \fBEINVAL\fP \fIgroesse\fP ist größer als \fBNGROUPS_MAX\fP (32 vor Linux 2.6.4; 65536 seit Linux 2.6.4). .TP \fBENOMEM\fP Speicher aufgebraucht. .TP \fBEPERM\fP Der aufrufende Prozess hat unzureichende Rechte (dem Aufrufenden fehlt die \fBCAP_SETGID\fP\-Capability in dem Benutzernamensraum, in dem er sich befindet). .TP \fBEPERM\fP (seit Linux 3.19) Die Verwendung von \fBsetgroups\fP() wird in diesem Benutzer\-Namensraum verweigert. Siehe die Beschreibung von \fI/proc/[pid]/setgroups\fP in \fBuser_namespaces\fP(7). .SH "KONFORM ZU" \fBgetgroups\fP(): SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. .PP \fBsetgroups\fP(): SVr4, 4.3BSD. Da \fBsetgroups\fP() Privilegien benötigt, ist es nicht durch POSIX.1 abgedeckt. .SH ANMERKUNGEN Ein Prozess kann bis zu \fBNGROUPS_MAX\fP zusätzliche Gruppenkennungen ergänzend zur effektiven Gruppenkennung haben. Die Konstante \fBNGROUPS_MAX\fP ist in \fI\fP definiert. Die Zusammenstellung zusätzlicher Gruppenkennungen wird vom Elternprozess geerbt und über ein \fBexecve\fP(2) aufbewahrt. .PP Die maximale Anzahl von zusätzlichen Gruppenkennungen kann zur Laufzeit durch Benutzung von \fBsysconf\fP(3) bestimmt werden: .PP .in +4n .EX long ngroups_max; ngroups_max = sysconf(_SC_NGROUPS_MAX); .EE .in .PP Der maximale Rückgabewert von \fBgetgroups\fP() kann nicht um mehr als eins größer als dieser Wert sein. Seit Linux 2.6.4 wird die maximale Anzahl zusätzlicher Gruppenkennungen außerdem über die nur lesbare Linux\-spezifische Datei \fI/proc/sys/kernel/ngroups_max\fP offengelegt. .PP .\" Der Original\-Linux\-Systemaufruf \fBgetgroups\fP() unterstützte nur 16\-Bit\-Gruppenkennungen. Nachfolgend fügte Linux 2.4 \fBgetgroups32\fP() hinzu, das 32\-Bit\-Kennungen unterstützte. Die Glibc\-Wrapper\-Funktion \fBgetgroups\fP() stellt die Änderungen transparent über Kernel\-Versionen hinweg bereit. .SS "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 \fBsetgroups\fP()) 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 \fBnptl\fP(7). .SH "SIEHE AUCH" \fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBgroup_member\fP(3), \fBinitgroups\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux\-\fIman\-pages\fP. 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/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze , René Tschirley , Chris Leick , Mario Blättermann und Dr. Tobias Quathamer erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE 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 die .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .