proc(5) File Formats Manual proc(5)

proc - Pseudo-Dateisystem für Prozessinformationen, Systeminformationen und Sycctl

/proc ist ein Pseudo-Dateisystem. Es dient als Schnittstelle zu den Kernel-Datenstrukturen und wird gewöhnlich unter /proc eingehängt. Typischerweise wird es vom System automatisch eingehängt. Es kann aber auch mit einem Befehl manuell eingehängt werden:


mount -t proc proc /proc

Die meisten Einträge im Dateisystem proc sind nur lesbar, aber einige Dateien sind auch schreibbar, wodurch das Verändern von Kernel-Variablen erlaubt wird.

Das Dateisystem proc unterstützt die folgenden Einhängeoptionen:

Diese Option regelt, wer auf die Informationen in den Verzeichnissen /proc/PID zugreifen darf. Das Argument n hat einen der folgenden Werte:
0
Jeder darf auf alle /proc/PID-Verzeichnisse zugreifen. Dies ist das traditionelle Verhalten und die Vorgabe, falls diese Einhängeoption nicht angegeben ist.
1
Benutzer dürfen auf nur ihre eigenen Dateien und Unterverzeichnisse innerhalb von /proc/PID zugreifen (die Verzeichnisse /proc/PID selbst bleiben sichtbar). Sensitive Dateien wie /proc/PID/cmdline und /proc/PID/status werden jetzt vor anderen Benutzer geschützt. Dadurch ist es unmöglich, herauszufinden, ob ein andere Benutzer ein bestimmtes Programm ausführt (solange das Programm sich nicht anderweitig durch sein Verhalten zu erkennen gibt).
2
Wie für Modus 1, aber zusätzlich werden die Verzeichnisse /proc/PID anderer Benutzer unsichtbar. Das bedeutet, dass die Einträge /proc/PID nicht mehr zur Aufdeckung von PIDs auf dem System genutzt werden können. Das versteckt nicht die Tatsache, dass ein bestimmter PID-Wert existiert (dies kann durch andere Methoden, beispielsweise »kill -0 $PID«, herausgefunden werden), aber es versteckt die UID und GID des Prozesses, die ansonsten durch Einsatz von stat(2) auf einem /proc/PID-Verzeichnis herausgefunden werden könnte. Dies verkompliziert die Aufgabe eines Angreifers deutlich, Informationen über laufende Prozesse zu sammeln (z.B. zu entdecken, ob ein Daemon mit erweiterten Privilegien läuft, ob ein anderer Benutzer ein bestimmtes sensitives Programm ausführt, ob ein anderer Benutzer ein bestimmtes Programm überhaupt ausführt usw.).
Legt die Kennung einer Gruppe fest, deren Mitglieder berechtigt sind, Prozessinformationen herauszufinden, die andernfalls durch hidepid verweigert würden (d.h. für Benutzer in der Gruppe verhält es sich, als ob /proc mit hidepid=0 eingehängt worden wäre). Diese Gruppe sollte anderen Ansätzen (wie dem Eintrag von Benutzern in die Datei sudoers(5)) vorgezogen werden.

Überblick

Unterhalb von /proc gibt es die folgenden allgemeinen Gruppen von Dateien und Unterverzeichnissen:

Jedes dieser Unterverzeichnisse enthält Dateien und Unterverzeichnisse, die Informationen über die Prozesse mit der entsprechenden Prozesskennung offenlegen.
Unterhalb jedes der /proc/PID-Verzeichnisse enthält ein Task-Unterverzeichnis entsprechende Unterverzeichnisse der Form TaskTID. Diese enthalten entsprechende Informationen über jeden der Threads in dem Prozess, wobei TID die Kernel-Thread-Kennung des Threads ist.
Die Unterverzeichnisse /proc/PID sind beim Durchlauf durch /proc mit getdents(2) sichtbar (und daher sichtbar, wenn ls(1) zur Anzeige der Inhalte von /proc verwandt wird).
Jedes dieser Unterverzeichnisse enthält Dateien und Unterverzeichnisse, die Informationen über den Thread mit der entsprechenden Thread-Kennung offenlegen. Der Inhalt dieser Verzeichnisse ist der gleiche wie bei den entsprechenden /proc/PID/task/TID-Verzeichnissen.
Die Verzeichnisse /proc/TID sind beim Durchlauf von /proc mit getdents(2) nicht sichtbar (und daher nicht sichtbar, wenn ls(1) zur Anzeige der Inhalte von /proc verwandt wird).
/proc/self
Wenn ein Prozess auf diesen magischen symbolischen Link zugreift, wird dieser auf das Verzeichnis /proc/PID des Prozesses selbst aufgelöst.
/proc/thread-self
Wenn ein Thread auf diesen magischen symbolischen Link zugreift, wird dieser auf das Verzeichnis /proc/self/task/TID des Prozesses selbst aufgelöst.
/proc/[a-z]*
Verschiedene andere Dateien und Unterverzeichnisse unter /proc legen systemweite Informationen offen.

Alles Dargestellte wird weiter unten mit mehr Details beschrieben.

Viele Dateien enthalten Zeichenketten (z. B. die Umgebung und die Befehlszeile), die im internen Format dargestellt sind, wobei Unterfelder mit Nullbytes (»\0«) begrenzt werden. Beim Untersuchen dieser Dateien werden Sie diese vielleicht besser lesbar finden, wenn Sie einen Befehl der folgenden Art zur Anzeige verwenden:


$ cat Datei | tr '\000' '\n'

cat(1), dmesg(1), find(1), free(1), htop(1), init(1), ps(1), pstree(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), sysfs(5), hier(7), namespaces(7), time(7), arp(8), hdparm(8), ifconfig(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8), sysctl(8)

Die Linux-Kernelquelldateien: Documentation/filesystems/proc.rst, Documentation/admin-guide/sysctl/fs.rst, Documentation/admin-guide/sysctl/kernel.rst, Documentation/admin-guide/sysctl/net.rst und Documentation/admin-guide/sysctl/vm.rst.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Dr. Tobias Quathamer <toddy@debian.org>, Chris Leick <c.leick@vollbio.de>, Erik Pfannenstein <debianignatz@gmx.de> und 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.

31. Oktober 2023 Linux man-pages 6.06