Provided by: manpages-de_4.21.0-2_all bug

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 <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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.