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).
Pokazuje jedynie określony podzestaw systemu procfs, ukrywając wszelkie pliki i katalogi głównego poziomu, które nie są związane z zadaniami.

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, 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).
Każdy z tych podkatalogów zawiera pliki i podkatalogi ujawniające informacje o wątku, według jego identyfikatora wątku. Zawartość podkatalogów jest taka sama, jak odpowiadających im katalogów /proc/pid/task/tid.
Podkatalogi /proc/tid nie są widoczne, przy odczytywaniu katalogu /proc za pomocą getdents(2) (i co za tym idzie nie są widoczne, przy przeglądaniu zawartości /proc za pomocą ls(1)).
/proc/self
Gdy proces uzyskuje dostęp do tego magicznego dowiązania symbolicznego, jest ono tłumaczone na jego własny katalog /proc/pid.
/proc/thread-self
Gdy wątek uzyskuje dostęp do tego magicznego dowiązania symbolicznego, jest ono tłumaczone na jego własny katalog /proc/self/task/tid.
/proc/[a-z]*
Różne inne pliki i podkatalogi w katalogu /proc ujawniające informacje systemowe.

Szczegółowy opis wszystkich powyższych pozycji znajduje się w oddzielnych stronach podręcznika systemowego, których nazwy zaczynają się od proc_.

Wiele plików zawiera łańcuchy (np. środowisko czy linia poleceń), które występują w postaci wewnętrznej, z polami zakończonymi bajtami NUL ('\0'), Przy sprawdzaniu takich plików, można się przekonać, że byłyby czytelniejsze, gdyby do ich odczytu korzystać z polecenia w następującej postaci:


$ cat plik | 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.

Tłumaczenie niniejszej strony podręcznika: 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.

17 maja 2025 r. Linux man-pages 6.15