credentials(7) Miscellaneous Information Manual credentials(7) BEZEICHNUNG credentials - Prozesskennzeichner BESCHREIBUNG Prozesskennzeichner (PID) Jeder Prozess hat einen eindeutigen, nicht negativen, ganzzahligen Kennzeichner, der ihm zugewiesen wird, wenn er mittels fork(2) erstellt wird. Ein Prozess kann seine PID mittels getpid(2) ermitteln. Eine PID wird mit dem Typ pid_t (definiert in ) dargestellt. PIDs werden in einer Reihe von Systemaufrufen verwandt, um den vom Aufruf betroffenen Prozess zu identifizieren. Beispiele: kill(2), ptrace(2), setpriority(2), setpgid(2), setsid(2), sigqueue(3) und waitpid(2). Eine PID eines Prozesses bleibt uber einen execve(2) hinweg erhalten. Elternprozesskennung (PPID) Die Elternprozesskennung eines Prozesses kennzeichnet den Prozess, der diesen Prozess mit fork(2) erstellte. Ein Prozess kann seine PPID mittels getppid(2) ermitteln. Eine PPID wird mit dem Typ pid_t dargestellt. Eine PPID eines Prozesses bleibt uber einen execve(2) hinweg erhalten. Prozessgruppenkennung und -sitzungskennung Jeder Prozess hat eine Sitzungskennung und eine Prozessgruppenkennung, beide mit dem Typ pid_t dargestellt. Ein Prozess kann seine Sitzungskennung mittels getsid(2) und seine Prozessgruppenkennung mittels getpgrp(2) ermitteln. Ein mittels fork(2) erstellter Kindprozess erbt die Sitzungs- und Prozessgruppenkennung des Elternprozesses. Eine Prozesssitzungskennung und Prozessgruppenkennung bleibt uber einen execve(2) hinweg erhalten. Sitzungs- und Prozessgruppen sind eine Abstraktion, die zur Unterstutzung von Shellauftragssteuerung entwickelt wurden. Eine Prozessgruppe (manchmal >>Auftrag<< (engl. >>job<<)) genannt, ist eine Sammlung von Prozessen, die die gleiche Prozessgruppenkennung haben; die Shell erstellt eine neue Prozessgruppe fur den oder die Prozess(e), die zur Ausfuhrung eines einzelnen Befehls oder einer Weiterleitung verwandt werden (z.B. werden die zwei Prozesse, die bei der Ausfuhrung des Befehls >>ls | wc<< erstellt werden, in die gleiche Prozessgruppe gelegt). Eine Prozessgruppenmitgliedschaft kann mittels setpgid(2) gesetzt werden. Der Prozess, dessen Prozesskennung identisch zu der Prozessgruppenkennung ist, ist der Prozessgruppenleiter fur diese Gruppe. Eine Sitzung ist eine Sammlung von Prozessen, die die gleiche Sitzungskennung haben. Alle Mitglieder einer Prozessgruppe haben auch die gleiche Sitzungskennung (d.h. alle Mitglieder einer Prozessgruppe gehoren immer zu der gleichen Sitzung, so dass die Sitzungs- und Prozessgruppen eine strenge, zweistufige Hierarchie von Prozessen bilden). Eine neue Sitzung wird erstellt, wenn ein Prozess setsid(2) aufruft. Dies erstellt eine neue Sitzung, deren Sitzungskennung identisch zu der PID des Prozesses ist, der setsid(2) aufrief. Der Ersteller der Sitzung wird Sitzungsleiter genannt. Alle Prozesse einer Sitzung teilen sich ein steuerndes Terminal. Das steuernde Terminal wird etabliert, wenn der Sitzungsleiter erstmalig ein Terminal offnet (ausser beim Aufruf von open(2) ist der Schalter O_NOCTTY angegeben). Ein Terminal kann nicht das steuernde Terminal fur mehrere Sitzungen gleichzeitig sein. Nur einer der Auftrage in einer Sitzung kann der Vordergrundauftrag sein; andere Auftrage in der Sitzung sind Hintergrundauftrage. Nur der Vordergrundauftrag kann vom Terminal lesen; wenn ein Prozess im Hintergrund versucht, vom Terminal zu lesen, wird der Prozessgruppe ein Signal SIGTTIN gesandt, wodurch der Auftrag suspendiert wird. Falls der Schalter TOSTOP fur das Terminal gesetzt wurde (siehe termios(3)), dann darf nur der Vordergrundauftrag auf das Terminal schreiben; Schreibzugriffe von Hintergrundauftragen fuhren zur Erstellung eines Signals SIGTTOU, wodurch der Auftrag suspendiert wird. Wenn Terminal-Tasten, die ein Signal erzeugen (wie die Unterbrechen-Taste, normalerweise Strg-C) gedruckt werden, wird das Signal an den Prozess im Vordergrundauftrag gesandt. Verschiedene Systemaufrufe und Bibliotheksfunktionen konnen auf alle Mitglieder einer Prozessgruppe agieren, einschliesslich kill(2), killpg(3), getpriority(2), setpriority(2), ioprio_get(2), ioprio_set(2), waitid(2) und waitpid(2). Siehe auch die Diskussion der Aktionen F_GETOWN, F_GETOWN_EX, F_SETOWN und F_SETOWN_EX in fcntl(2). Benutzer- und Gruppenkennungen Jedem Prozess sind verschiedene Benutzer- und Gruppenkennungen zugeordnet. Diese Kennungen sind Ganzzahlen bzw. werden durch die Typen uid_t und gid_t (definiert in ) dargestellt. Unter Linux hat jeder Prozess die folgenden Benutzer- und Gruppenkennungen: o Reale Benutzer- und reale Gruppenkennung. Diese Kennungen bestimmen, wer der Eigentumer des Prozesses ist. Ein Prozess kann seine reale Benutzer- (Gruppen-)Kennung mittels getuid(2) (getgid(2)) ermitteln. o Effektive Benutzer- und effektive Gruppenkennung. Diese Kennungen werden vom Kernel verwandt, um die Berechtigungen zu bestimmen, die der Prozess beim Zugriff auf gemeinsam benutzte Ressourcen wie Nachrichtenwarteschlangen, gemeinsamen Speicher und Semaphoren hat. Auf den meisten UNIX-Systemen bestimmen diese Kennungen auch die Berechtigungen beim Zugriff auf Dateien. Allerdings verwendet Linux die nachfolgend beschriebenen Dateisystemkennungen fur diese Aufgabe. Ein Prozess kann seine effektive Benutzer- (Gruppen-)Kennung mittels geteuid(2) (getegid(2)) ermitteln. o Gespeicherte set-user- und gespeicherte set-group-Kennung. Diese Kennungen werden in set-user-ID- und set-group-ID-Programmen gesetzt, um eine Kopie der entsprechenden effektiven Kennungen zu speichern, die gesetzt waren, als das Programm ausgefuhrt wurde (siehe execve(2)). Ein set-user-ID-Programm kann Privilegien annehmen und abgeben, indem es seine effektive Benutzerkennung zwischen den Werten in seiner realen Benutzerkennung und der gespeicherten set-user-Kennung vor- und zuruckschaltet. Dieses Umschalten erfolgt mittels Aufrufen von seteuid(2), setreuid(2) oder setresuid(2). Ein set-group-ID-Programm fuhrt dies analoge mittels setegid(2), setregid(2) oder setresgid(2) durch. Ein Prozess kann seine gespeicherte set-user-Kennung (set-group-Kennung) mittels getresuid(2) (getresgid(2)) ermitteln. o Dateisystembenutzer- und Dateisystemgruppenkennung (Linux-spezifisch). Diese Kennungen werden im Zusammenspiel mit den nachfolgend beschriebenen erganzenden Gruppenkennungen zur Ermittlung der Berechtigungen beim Dateizugriff verwandt; siehe path_resolution(7) fur Details. Immer wenn die effektive Benutzer- (Gruppen-)Kennung eines Prozesses geandert wird, andert der Kernel auch automatisch die Dateisystembenutzer- (-gruppen-)kennung auf den gleichen Wert. Konsequenterweise haben die Dateisystemkennungen normalerweise den gleichen Wert wie die entsprechenden effektiven Kennungen und die Semantik fur Dateisystemprufungen sind daher unter Linux die gleichen wie auf anderen UNIX-Systemen. Die Dateisystembenutzerkennungen konnen durch Aufruf von setfsuid(2) und setfsgid(2) von den effektiven Kennungen unterschiedlich gemacht werden. o Erganzende Gruppenkennungen. Dies ist ein Satz von zusatzlichen Gruppenkennungen, die fur Berechtigungsprufungen beim Zugriff auf Dateien und andere gemeinsame Ressourcen verwandt werden. Vor Linux 2.6.4 konnte ein Prozess Mitglied von bis zu 32 erganzenden Gruppen werden; seit Linux 2.6.4 kann ein Prozess Mitglied von bis zu 65536 erganzenden Gruppen werden. Der Aufruf sysconf(_SC_NGROUPS_MAX) kann dazu verwandt werden, um die Anzahl der erganzenden Gruppen zu bestimmen, in denen ein Prozess ein Mitglied werden darf. Ein Prozess kann seinen Satz an erganzenden Gruppenkennungen mittels getgroups(2) ermitteln. Ein mit fork(2) erstellter Kindprozess kopiert die Benutzer- und Gruppenkennung seines Elternprozesses. Wahrend eines execve(2) werden die realen Benutzer- und Gruppenkennungen und erganzenden Gruppenkennungen erhalten; die effektiven und gespeicherten gesetzten Kennungen konnen geandert werden, wie in execve(2) beschrieben. Abgesehen von den oben genannten Zwecken werden die Benutzerkennungen eines Prozesses auch in einer Reihe weiterer Kontexte eingesetzt: o Bei der Bestimmung der Berechtigungen zum Senden von Signalen (siehe kill(2)); o Bei der Bestimmung der Berechtigungen zum Setzen der Prozessplanungs-Parameter (Nice-Wert, Echtzeit-Scheduling-Richtlinie und -Prioritat, CPU-Affinitat, E/A-Prioritat) mittels setpriority(2), sched_setaffinity(2), sched_setscheduler(2), sched_setparam(2), sched_setattr(2) und ioprio_set(2); o Bei der Uberprufung der Ressourcenbeschrankungen (siehe getrlimit(2)); o Bei der Uberprufung der Beschrankungen der Anzahl der Inotify-Instanzen, die ein Prozess erstellen darf (siehe inotify(7)). Benutzer- und Gruppenkennungen von Prozessen verandern Entsprechend der in den relevanten Handbuchseiten beschriebenen Regeln kann ein Prozess die folgenden APIs verwenden, um seine Benutzer- und Gruppenkennungen zu verandern: setuid(2) (setgid(2)) Verandern der realen (und moglicherweise effektiven und saved-set-)Benutzerkennung (Gruppenkennung) des Prozesses. seteuid(2) (setegid(2)) Verandern der effektiven Benutzer- (Gruppen-)kennung des Prozesses. setfsuid(2) (setfsgid(2)) Verandern der Dateisystembenutzer- (-gruppen-)kennung des Prozesses. setreuid(2) (setregid(2)) Verandern der realen und effektiven (und moglicherweise saved-set-) Benutzer- (Gruppen-)kennung des Prozesses. setresuid(2) (setresgid(2)) Verandern der realen, effektiven und saved-set-Benutzer- (-Gruppen-)Kennungen. setgroups(2) Verandern der erganzenden Gruppenliste des Prozesses. Jede Anderung an der effektiven Benutzer- (Gruppen-)kennung des Prozesses wird automatisch zu der Dateisystembenutzer- (-gruppen-)kennung des Prozesses ubertragen. Anderungen an einer effektiven Benutzer- oder Gruppenkennung konnen auch das Attribut >>dumpable<< des Prozesses beeinflussen, wie dies in prctl(2) beschrieben wird. Anderungen an den Benutzer- und Gruppenkennungen eines Prozesses konnen die Capabilitys eines Prozesses beeinflussen, wie dies in capabilities(7) beschrieben ist. STANDARDS Prozesskennungen, Elternprozesskennungen, Prozessgruppenkennungen und Sitzungskennungen sind in POSIX.1 spezifiziert. Die realen, effektiven und gespeicherten gesetzten Benutzer- und Gruppenkennungen und die erganzenden Gruppenkennungen sind in POSIX.1 spezifiziert. Die Dateisystem-Benutzer- und -Gruppenkennungen sind eine Linux-Erweiterung. ANMERKUNGEN Verschiedene Felder in der Datei /proc/PID/status zeigen die oben beschriebenen Prozesszugangsberechtigungen. Siehe proc(5) fur weitere Informationen. Die POSIX-Thread-Spezifikation verlangt, dass Zugangsberechtigungen von allen Threads in einem Prozess gemeinsam benutzt werden. Auf der Kernelebene verwaltet Linux allerdings separate Benutzer- und Gruppenzugangsberechtigungen fur jeden Thread. Die NPTL-Threading-Implementierung erledigt einiges an Arbeit, um sicherzustellen, dass jede Anderungen an den Benutzer- oder Gruppenzugangsberechtigungen (z.B. Aufrufe von setuid(2), setresuid(2)) an alle POSIX-Threads in einem Prozess ubertragen werden. Siehe nptl(7) fur weitere Details. SIEHE AUCH bash(1), csh(1), groups(1), id(1), newgrp(1), ps(1), runuser(1), setpriv(1), sg(1), su(1), access(2), execve(2), faccessat(2), fork(2), getgroups(2), getpgrp(2), getpid(2), getppid(2), getsid(2), kill(2), setegid(2), seteuid(2), setfsgid(2), setfsuid(2), setgid(2), setgroups(2), setpgid(2), setresgid(2), setresuid(2), setsid(2), setuid(2), waitpid(2), euidaccess(3), initgroups(3), killpg(3), tcgetpgrp(3), tcgetsid(3), tcsetpgrp(3), group(5), passwd(5), shadow(5), capabilities(7), namespaces(7), path_resolution(7), pid_namespaces(7), pthreads(7), signal(7), system_data_types(7), unix(7), user_namespaces(7), sudo(8) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 19. November 2023 credentials(7)