Provided by: manpages-de_4.26.0-1_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 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.

Linux man-pages 6.9.1                              2. Mai 2024                                    credentials(7)