Provided by: manpages-de_4.27.0-1_all bug

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)