.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2007 by Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 2007-06-13 Creation .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH CREDENTIALS 7 "1. November 2020" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG credentials \- Prozesskennzeichner .SH BESCHREIBUNG .SS "Prozesskennzeichner (PID)" Jeder Prozess hat einen eindeutigen, nicht negativen, ganzzahligen Kennzeichner, der ihm zugewiesen wird, wenn er mittels \fBfork\fP(2) erstellt wird. Ein Prozess kann seine PID mittels \fBgetpid\fP(2) ermitteln. Eine PID wird mit dem Typ \fIpid_t\fP (definiert in \fI\fP) dargestellt. .PP .\" .BR sched_rr_get_interval (2), .\" .BR sched_getaffinity (2), .\" .BR sched_setaffinity (2), .\" .BR sched_getparam (2), .\" .BR sched_setparam (2), .\" .BR sched_setscheduler (2), .\" .BR sched_getscheduler (2), .\" .BR getsid (2), .\" .BR waitid (2), .\" .BR wait4 (2), PIDs werden in einer Reihe von Systemaufrufen verwandt, um den vom Aufruf betroffenen Prozess zu identifizieren. Beispiele: \fBkill\fP(2), \fBptrace\fP(2), \fBsetpriority\fP(2), \fBsetpgid\fP(2), \fBsetsid\fP(2), \fBsigqueue\fP(3) und \fBwaitpid\fP(2). .PP Eine PID eines Prozesses bleibt über einen \fBexecve\fP(2) hinweg erhalten. .SS "Elternprozesskennung (PPID)" Die Elternprozesskennung eines Prozesses kennzeichnet den Prozess, der diesen Prozess mit \fBfork\fP(2) erstellte. Ein Prozess kann seine PPID mittels \fBgetppid\fP(2) ermitteln. Eine PPID wird mit dem Typ \fIpid_t\fP dargestellt. .PP Eine PPID eines Prozesses bleibt über einen \fBexecve\fP(2) hinweg erhalten. .SS "Prozessgruppenkennung und \-sitzungskennung" Jeder Prozess hat eine Sitzungskennung und eine Prozessgruppenkennung, beide mit dem Typ \fIpid_t\fP dargestellt. Ein Prozess kann seine Sitzungskennung mittels \fBgetsid\fP(2) und seine Prozessgruppenkennung mittels \fBgetpgrp\fP(2) ermitteln. .PP Ein mittels \fBfork\fP(2) erstellter Kindprozess erbt die Sitzungs\- und Prozessgruppenkennung des Elternprozesses. Eine Prozesssitzungskennung und Prozessgruppenkennung bleibt über einen \fBexecve\fP(2) hinweg erhalten. .PP 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 \fBsetpgid\fP(2) gesetzt werden. Der Prozess, dessen Prozesskennung identisch zu der Prozessgruppenkennung ist, ist der \fIProzessgruppenleiter\fP für diese Gruppe. .PP 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 \fBsetsid\fP(2) aufruft. Dies erstellt eine neue Sitzung, deren Sitzungskennung identisch zu der PID des Prozesses ist, der \fBsetsid\fP(2) aufrief. Der Ersteller der Sitzung wird \fISitzungsleiter\fP genannt. .PP Alle Prozesse einer Sitzung teilen sich ein \fIsteuerndes Terminal\fP. Das steuernde Terminal wird etabliert, wenn der Sitzungsleiter erstmalig ein Terminal öffnet (außer beim Aufruf von \fBopen\fP(2) ist der Schalter \fBO_NOCTTY\fP angegeben). Ein Terminal kann nicht das steuernde Terminal für mehrere Sitzungen gleichzeitig sein. .PP Nur einer der Aufträge in einer Sitzung kann der \fIVordergrundauftrag\fP sein; andere Aufträge in der Sitzung sind \fIHintergrundaufträge\fP. Nur der Vordergrundauftrag kann vom Terminal lesen; wenn ein Prozess im Hintergrund versucht, vom Terminal zu lesen, wird der Prozessgruppe ein Signal \fBSIGTTIN\fP gesandt, wodurch der Auftrag suspendiert wird. Falls der Schalter \fBTOSTOP\fP für das Terminal gesetzt wurde (siehe \fBtermios\fP(3)), dann darf nur der Vordergrundauftrag auf das Terminal schreiben; Schreibzugriffe von einem Hintergrundauftrag führen zur Erstellung eines Signals \fBSIGTTOU\fP, wodurch der Auftrag suspendiert wird. Wenn Terminal\-Tasten, die ein Signal erzeugen (wie die \fIUnterbrechen\fP\-Taste, normalerweise Strg\-C) gedrückt werden, wird das Signal an den Prozess im Vordergrundauftrag gesandt. .PP Verschiedene Systemaufrufe und Bibliotheksfunktionen können auf alle Mitglieder einer Prozessgruppe agieren, einschließlich \fBkill\fP(2), \fBkillpg\fP(3), \fBgetpriority\fP(2), \fBsetpriority\fP(2), \fBioprio_get\fP(2), \fBioprio_set\fP(2), \fBwaitid\fP(2) und \fBwaitpid\fP(2). Siehe auch die Diskussion der Aktionen \fBF_GETOWN\fP, \fBF_GETOWN_EX\fP, \fBF_SETOWN\fP und \fBF_SETOWN_EX\fP in \fBfcntl\fP(2). .SS "Benutzer\- und Gruppenkennungen" Jedem Prozess sind verschiedene Benutzer\- und Gruppenkennungen zugeordnet. Diese Kennungen sind Ganzzahlen bzw. werden durch die Typen \fIuid_t\fP und \fIgid_t\fP (definiert in \fI\fP) dargestellt. .PP Unter Linux hat jeder Prozess die folgenden Benutzer\- und Gruppenkennungen: .IP * 3 Reale Benutzer\- und reale Gruppenkennung. Diese Kennungen bestimmen, wer der Eigentümer des Prozesses ist. Ein Prozess kann seine reale Benutzer\- (Gruppen\-)Kennung mittels \fBgetuid\fP(2) (\fBgetgid\fP(2)) ermitteln. .IP * 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 \fBgeteuid\fP(2) (\fBgetegid\fP(2)) ermitteln. .IP * 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 \fBexecve\fP(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 \fBseteuid\fP(2), \fBsetreuid\fP(2) oder \fBsetresuid\fP(2). Ein set\-group\-ID\-Programm führt dies analoge mittels \fBsetegid\fP(2), \fBsetregid\fP(2) oder \fBsetresgid\fP(2) durch. Ein Prozess kann seine gespeicherte set\-user\-Kennung (set\-group\-Kennung) mittels \fBgetresuid\fP(2) (\fBgetresgid\fP(2)) ermitteln. .IP * 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 \fBpath_resolution\fP(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 \fBsetfsuid\fP(2) und \fBsetfsgid\fP(2) von den effektiven Kennungen unterschiedlich gemacht werden. .IP * .\" Since kernel 2.6.4, the limit is visible via the read-only file .\" /proc/sys/kernel/ngroups_max. .\" As at 2.6.22-rc2, this file is still read-only. 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 Kernel 2.6.4 kann ein Prozess Mitglied von bis zu 65536 ergänzenden Gruppen werden. Der Aufruf \fIsysconf(_SC_NGROUPS_MAX)\fP 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 \fBgetgroups\fP(2) ermitteln. .PP Ein mit \fBfork\fP(2) erstellter Kindprozess kopiert die Benutzer\- und Gruppenkennung seines Elternprozesses. Während eines \fBexecve\fP(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 \fBexecve\fP(2) beschrieben. .PP Abgesehen von den oben genannten Zwecken werden die Benutzerkennungen eines Prozesses auch in einer Reihe weiterer Kontexte eingesetzt: .IP * 3 Bei der Bestimmung der Berechtigungen zum Senden von Signalen (siehe \fBkill\fP(2)); .IP * 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 \fBsetpriority\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBsched_setattr\fP(2) und \fBioprio_set\fP(2); .IP * Bei der Überprüfung der Ressourcenbeschränkungen (siehe \fBgetrlimit\fP(2)); .IP * .\" Bei der Überprüfung der Beschränkungen der Anzahl der Inotify\-Instanzen, die ein Prozess erstellen darf (siehe \fBinotify\fP(7)). .SS "Benutzer\- und Gruppenkennungen von Prozessen verändern" .PP Entsprechend der in den relevanten Handbuchseiten beschriebenen Regeln kann ein Prozess die folgenden APIs verwenden, um seine Benutzer\- und Gruppenkennungen zu verändern: .TP \fBsetuid\fP(2) (\fBsetgid\fP(2)) Verändern der realen (und möglicherweise effektiven und saved\-set\-)Benutzerkennung (Gruppenkennung) des Prozesses. .TP \fBseteuid\fP(2) (\fBsetegid\fP(2)) Verändern der effektiven Benutzer\- (Gruppen\-)kennung des Prozesses. .TP \fBsetfsuid\fP(2) (\fBsetfsgid\fP(2)) Verändern der Dateisystembenutzer\- (\-gruppen\-)kennung des Prozesses. .TP \fBsetreuid\fP(2) (\fBsetregid\fP(2)) Verändern der realen und effektiven (und möglicherweise saved\-set\-) Benutzer\- (Gruppen\-)kennung des Prozesses. .TP \fBsetresuid\fP(2) (\fBsetresgid\fP(2)) Verändern der realen, effektiven und saved\-set\-Benutzer\- (\-Gruppen\-)Kennungen. .TP \fBsetgroups\fP(2) Verändern der ergänzenden Gruppenliste des Prozesses. .PP 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 \fBprctl\fP(2) beschrieben wird. .PP Änderungen an den Benutzer\- und Gruppenkennungen eines Prozesses können die Capabilitys eines Prozesses beeinflussen, wie dies in \fBcapabilities\fP(7) beschrieben ist. .SH "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. .SH ANMERKUNGEN Verschiedene Felder in der Datei \fI/proc/[PID]/status\fP zeigen die oben beschriebenen Prozesszugangsberechtigungen. Siehe \fBproc\fP(5) für weitere Informationen. .PP 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 \fBsetuid\fP(2), \fBsetresuid\fP(2)) an alle POSIX\-Threads in einem Prozess übertragen werden. Siehe \fBnptl\fP(7) für weitere Details. .SH "SIEHE AUCH" \fBbash\fP(1), \fBcsh\fP(1), \fBgroups\fP(1), \fBid\fP(1), \fBnewgrp\fP(1), \fBps\fP(1), \fBrunuser\fP(1), \fBsetpriv\fP(1), \fBsg\fP(1), \fBsu\fP(1), \fBaccess\fP(2), \fBexecve\fP(2), \fBfaccessat\fP(2), \fBfork\fP(2), \fBgetgroups\fP(2), \fBgetpgrp\fP(2), \fBgetpid\fP(2), \fBgetppid\fP(2), \fBgetsid\fP(2), \fBkill\fP(2), \fBsetegid\fP(2), \fBseteuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetgid\fP(2), \fBsetgroups\fP(2), \fBsetpgid\fP(2), \fBsetresgid\fP(2), \fBsetresuid\fP(2), \fBsetsid\fP(2), \fBsetuid\fP(2), \fBwaitpid\fP(2), \fBeuidaccess\fP(3), \fBinitgroups\fP(3), \fBkillpg\fP(3), \fBtcgetpgrp\fP(3), \fBtcgetsid\fP(3), \fBtcsetpgrp\fP(3), \fBgroup\fP(5), \fBpasswd\fP(5), \fBshadow\fP(5), \fBcapabilities\fP(7), \fBnamespaces\fP(7), \fBpath_resolution\fP(7), \fBpid_namespaces\fP(7), \fBpthreads\fP(7), \fBsignal\fP(7), \fBsystem_data_types\fP(7), \fBunix\fP(7), \fBuser_namespaces\fP(7), \fBsudo\fP(8) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux\-\fIman\-pages\fP. 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/. .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .