Provided by: manpages-de_4.15.0-9_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    einem
       Hintergrundauftrag  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. Auf Linux-Kerneln vor 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.

KONFORM ZU

       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)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  5.13  des  Projekts  Linux-man-pages. 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/.

Ü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⟩.