Provided by: manpages-de_4.27.0-1_all 

BEZEICHNUNG
credentials - Prozesskennzeichner
BESCHREIBUNG
Prozesskennzeichner (PID)
Jeder Prozess hat einen eindeutigen, nichtnegativen, 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 <sys/types.h>) 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 über 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 über 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 über einen execve(2) hinweg
erhalten.
Sitzungs- und Prozessgruppen sind eine Abstraktion, die zur Unterstützung 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 für
den oder die Prozess(e), die zur Ausführung eines einzelnen Befehls oder einer Weiterleitung verwandt
werden (z.B. werden die zwei Prozesse, die bei der Ausführung 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 für 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
gehören 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 öffnet (außer beim Aufruf von open(2) ist der Schalter
O_NOCTTY angegeben). Ein Terminal kann nicht das steuernde Terminal für mehrere Sitzungen gleichzeitig
sein.
Nur einer der Aufträge in einer Sitzung kann der Vordergrundauftrag sein; andere Aufträge in der Sitzung
sind Hintergrundaufträge. 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 für das Terminal gesetzt wurde (siehe
termios(3)), dann darf nur der Vordergrundauftrag auf das Terminal schreiben; Schreibzugriffe von
Hintergrundaufträgen führen zur Erstellung eines Signals SIGTTOU, wodurch der Auftrag suspendiert wird.
Wenn Terminal-Tasten, die ein Signal erzeugen (wie die Unterbrechen-Taste, normalerweise Strg-C) gedrückt
werden, wird das Signal an den Prozess im Vordergrundauftrag gesandt.
Verschiedene Systemaufrufe und Bibliotheksfunktionen können auf alle Mitglieder einer Prozessgruppe
agieren, einschließlich 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 <sys/types.h>) dargestellt.
Unter Linux hat jeder Prozess die folgenden Benutzer- und Gruppenkennungen:
• Reale Benutzer- und reale Gruppenkennung. Diese Kennungen bestimmen, wer der Eigentümer des Prozesses
ist. Ein Prozess kann seine reale Benutzer- (Gruppen-)Kennung mittels getuid(2) (getgid(2)) ermitteln.
• 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 für diese Aufgabe. Ein Prozess kann seine effektive
Benutzer- (Gruppen-)Kennung mittels geteuid(2) (getegid(2)) ermitteln.
• 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 ausgeführt 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 zurückschaltet. Dieses
Umschalten erfolgt mittels Aufrufen von seteuid(2), setreuid(2) oder setresuid(2). Ein
set-group-ID-Programm führt 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.
• Dateisystembenutzer- und Dateisystemgruppenkennung (Linux-spezifisch). Diese Kennungen werden im
Zusammenspiel mit den nachfolgend beschriebenen ergänzenden Gruppenkennungen zur Ermittlung der
Berechtigungen beim Dateizugriff verwandt; siehe path_resolution(7) für Details. Immer wenn die
effektive Benutzer- (Gruppen-)Kennung eines Prozesses geändert wird, ändert 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 für Dateisystemprüfungen sind daher unter Linux die gleichen wie auf anderen
UNIX-Systemen. Die Dateisystembenutzerkennungen können durch Aufruf von setfsuid(2) und setfsgid(2)
von den effektiven Kennungen unterschiedlich gemacht werden.
• Ergänzende Gruppenkennungen. Dies ist ein Satz von zusätzlichen Gruppenkennungen, die für
Berechtigungsprüfungen beim Zugriff auf Dateien und andere gemeinsame Ressourcen verwandt werden. Vor
Linux 2.6.4 konnte ein Prozess Mitglied von bis zu 32 ergänzenden Gruppen werden; seit Linux 2.6.4
kann ein Prozess Mitglied von bis zu 65536 ergänzenden Gruppen werden. Der Aufruf
sysconf(_SC_NGROUPS_MAX) kann dazu verwandt werden, um die Anzahl der ergänzenden Gruppen zu
bestimmen, in denen ein Prozess ein Mitglied werden darf. Ein Prozess kann seinen Satz an ergänzenden
Gruppenkennungen mittels getgroups(2) ermitteln.
Ein mit fork(2) erstellter Kindprozess kopiert die Benutzer- und Gruppenkennung seines Elternprozesses.
Während eines execve(2) werden die realen Benutzer- und Gruppenkennungen und ergänzenden Gruppenkennungen
erhalten; die effektiven und gespeicherten gesetzten Kennungen können geändert werden, wie in execve(2)
beschrieben.
Abgesehen von den oben genannten Zwecken werden die Benutzerkennungen eines Prozesses auch in einer Reihe
weiterer Kontexte eingesetzt:
• Bei der Bestimmung der Berechtigungen zum Senden von Signalen (siehe kill(2));
• Bei der Bestimmung der Berechtigungen zum Setzen der Prozessplanungs-Parameter (Nice-Wert,
Echtzeit-Scheduling-Richtlinie und -Priorität, CPU-Affinität, E/A-Priorität) mittels setpriority(2),
sched_setaffinity(2), sched_setscheduler(2), sched_setparam(2), sched_setattr(2) und ioprio_set(2);
• Bei der Überprüfung der Ressourcenbeschränkungen (siehe getrlimit(2));
• Bei der Überprüfung der Beschränkungen der Anzahl der Inotify-Instanzen, die ein Prozess erstellen
darf (siehe inotify(7)).
Benutzer- und Gruppenkennungen von Prozessen verändern
Entsprechend der in den relevanten Handbuchseiten beschriebenen Regeln kann ein Prozess die folgenden
APIs verwenden, um seine Benutzer- und Gruppenkennungen zu verändern:
setuid(2) (
setgid(2)) Verändern der realen (und möglicherweise effektiven und saved-set-)Benutzerkennung
(Gruppenkennung) des Prozesses.
seteuid(2) (
setegid(2)) Verändern der effektiven Benutzer- (Gruppen-)kennung des Prozesses.
setfsuid(2) (
setfsgid(2)) Verändern der Dateisystembenutzer- (-gruppen-)kennung des Prozesses.
setreuid(2) (
setregid(2)) Verändern der realen und effektiven (und möglicherweise saved-set-) Benutzer-
(Gruppen-)kennung des Prozesses.
setresuid(2) (
setresgid(2)) Verändern der realen, effektiven und saved-set-Benutzer- (-Gruppen-)Kennungen.
setgroups(2)
Verändern der ergänzenden Gruppenliste des Prozesses.
Jede Änderung an der effektiven Benutzer- (Gruppen-)kennung des Prozesses wird automatisch zu der
Dateisystembenutzer- (-gruppen-)kennung des Prozesses übertragen. Änderungen an einer effektiven
Benutzer- oder Gruppenkennung können auch das Attribut »dumpable« des Prozesses beeinflussen, wie dies in
prctl(2) beschrieben wird.
Änderungen an den Benutzer- und Gruppenkennungen eines Prozesses können 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
ergänzenden 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) für 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 für jeden Thread. Die NPTL-Threading-Implementierung erledigt einiges an
Arbeit, um sicherzustellen, dass jede Änderungen an den Benutzer- oder Gruppenzugangsberechtigungen (z.B.
Aufrufe von setuid(2), setresuid(2)) an alle POSIX-Threads in einem Prozess übertragen werden. Siehe
nptl(7) für 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)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> 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 die
Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.
Linux man-pages 6.9.1 2. Mai 2024 credentials(7)