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:
- hidepid=n
(seit Linux 3.3)
- 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.).
- gid=gid (seit
Linux 3.3)
- 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.
- subset=pid
(seit Linux 5.8)
- Zeigt nur die angegebene Teilmenge von Procfs, versteckt die Dateien und
Verzeichnisse im Procfs auf der höchsten Ebene, die keinen Bezug zu
Prozessen haben.
Überblick
Unterhalb von /proc gibt es die folgenden allgemeinen
Gruppen von Dateien und Unterverzeichnissen:
- Unterverzeichnisse
von /proc/PID
- 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).
- Unterverzeichnisse
von /proc/TID
- 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 in separaten Handbuchseiten, deren Namen
mit proc_ beginnt, 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:
debian-l10n-german@lists.debian.org.