proc(5) File Formats Manual proc(5)

proc - pseudosystem plików z informacjami o procesach, systemie i sysctl

proc jest pseudosystemem plików, który udostępnia interfejs do struktur danych jądra. Zazwyczaj jest montowany w katalogu /proc. Zwykle jest montowany automatycznie przez system, lecz można go zamontować również ręcznie za pomocą polecenia takiego jak:


mount -t proc proc /proc

Większość plików w systemie plików proc jest przeznaczonych tylko do odczytu, lecz niektóre pliki są dostępne do zapisu, umożliwiając modyfikacje zmiennych jądra.

System plików proc obsługuje następujące opcje montowania:

Opcja kontroluje kto może uzyskać dostęp do informacji w katalogach /proc/pid. Argument n przyjmuje jedną z następujących wartości:
0
Wszyscy mają dostęp do katalogów /proc/pid. Jest to tradycyjne zachowanie i domyślne, jeśli nie użyje się tej opcji montowania.
1
Użytkownicy nie mogą uzyskać dostępu do plików i podkatalogów w katalogach /proc/pid innych niż ich własne (same katalogi /proc/pid pozostają widoczne). Wrażliwe pliki, takie jak /proc/pid/cmdline i /proc/pid/status są chronione przed innymi użytkownikami. Dzięki temu niemożliwe staje się dowiedzenie się, czy jakiś użytkownik uruchomił konkretny program (tak długo, jak sam program nie ujawnia tego swoim zachowaniem).
2
Jak w trybie 1, lecz dodatkowo katalogi /proc/pid przynależne innym użytkownikom pozostają niewidoczne. Oznacza to, że wpisy /proc/pid nie mogą dłużej służyć do poznania PID-ów w systemie. Nie ukrywa to faktu, że proces o określonym PID istnieje (można się tego dowiedzieć innymi sposobami, np. poprzez "kill -0 $PID"), ale ukrywa UID i GID procesu, które w innym przypadku można by było poznać wykonując stat(2) na katalogu /proc/pid. To znacznie utrudnia zadanie atakującego polegające na pozyskaniu informacji o działających procesach (np. odkrycie czy jakiś demon działa z większymi uprawnieniami, czy jakiś użytkownik ma uruchomiony jakiś wrażliwy program, czy inni użytkownicy w ogóle mają coś uruchomione itd.).
Określa ID grupy, której członkowie są uprawnieni do dostępu do informacji zablokowanych innym przez hidepid (tzn. użytkownicy w tej grupie zachowują się tak, jakby /proc zostało zamontowane z hidepid=0). Powinno się używać tej grupy, zamiast innych rozwiązań, takich jak umieszczanie użytkowników nie-root w pliku sudoers(5).

W katalogu /proc występują następujące ogólne grupy plików i podkatalogów:

Każdy z tych podkatalogów zawiera pliki i podkatalogi ujawniające informacje o procesach o określonym identyfikatorze procesu.
W każdym z katalogów /proc/pid directories, znajduje się podkatalog task, zawierający z kolei podkatalogi w postaci task/tid, zawierający informacje o każdym z wątków procesu, gdzie tid jest identyfikatorem wątku przypisanym przez jądro danego wątkowi.
Podkatalogi /proc/pid są widoczne przy odpytywaniu za pomocą getdents(2) (zatem są widoczne gdy użytkownik użyje ls(1) do przeglądania zawartości /proc).
Each one of these subdirectories contains files and subdirectories exposing information about the thread with the corresponding thread ID. The contents of these directories are the same as the corresponding /proc/pid/task/tid directories.
The /proc/tid subdirectories are not visible when iterating through /proc with getdents(2) (and thus are not visible when one uses ls(1) to view the contents of /proc).
/proc/self
When a process accesses this magic symbolic link, it resolves to the process's own /proc/pid directory.
/proc/thread-self
When a thread accesses this magic symbolic link, it resolves to the process's own /proc/self/task/tid directory.
/proc/[a-z]*
Various other files and subdirectories under /proc expose system-wide information.

All of the above are described in more detail below.

Many files contain strings (e.g., the environment and command line) that are in the internal format, with subfields terminated by null bytes ('\0'). When inspecting such files, you may find that the results are more readable if you use a command of the following form to display them:


$ cat file | 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)

Pliki w źródłach jądra Linux: Documentation/filesystems/proc.rst, Documentation/admin-guide/sysctl/fs.rst, Documentation/admin-guide/sysctl/kernel.rst, Documentation/admin-guide/sysctl/net.rst i Documentation/admin-guide/sysctl/vm.rst.

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

31 października 2023 r. Linux man-pages 6.06