proc(5) File Formats Manual proc(5)

ИМЯ

proc - process information, system information, and sysctl pseudo-filesystem

ОПИСАНИЕ

Файловая система proc — это псевдо-файловая система, которая предоставляет интерфейс к структурам данных ядра. Обычно, она монтируется в /proc и это выполняется системой автоматически, но также можно монтировать её вручную с помощью команды:


mount -t proc proc /proc

Большинство файлов файловой системы proc доступны только для чтения, но есть и доступные на запись, через которые можно изменять переменные ядра.

Параметры монтирования

Файловая система proc поддерживает следующие параметры монтирования:

Позволяет управлять доступом к информации в каталогах /proc/pid. В аргументе n может указываться одно из следующих значений:
0
Все имеют доступ ко всем каталогам /proc/pid. Обычное поведение, используется по умолчанию, если этот параметр не указан.
1
Пользователи не имеют доступа к файлам и подкаталогам любого каталога /proc/pid кроме их собственных (сами каталоги /proc/pid остаются видимыми). Важные файлы /proc/pid/cmdline и /proc/pid/status теперь защищены от других пользователей. Это делает невозможным увидеть какие программы запустил пользователь (до тех пор, пока сама программа не раскрывает себя своим поведением).
2
Как режим 1, но дополнительно и каталоги /proc/pid, принадлежащие другим пользователям, становятся невидимыми. Это означает, что элементы /proc/pid теперь нельзя использовать для получения PID в системе. Это не скрывает факт того, что процесса с определённым PID не существует (это можно определить по другому, например, командой «kill -0 $PID»), но это скрывает UID и GID процесса, которые можно было определять с помощью stat(2) на каталог /proc/pid. Это сильно усложняет атакующему задачу по сбору информации о выполняющихся процессах (например, определение того, запущены ли некоторые службы с повышенными правами, запустил ли другой пользователь некоторую важную программу, выполняет ли вообще какую-либо программу другой пользователь и так далее).
Задаёт ID группы, члены которой могут просматривать информацию о процессах в обход запрещению hidepid, (т. е. пользователям в этой группе кажется, что /proc смонтирована с hidepid=0). Эту группу нужно использовать вместо помещения непривилегированных пользователем в файл sudoers(5) для тех же целей.

Обзор

В каталоге /proc существуют следующие общие группы файлов и подкаталогов:

Подкаталоги /proc/pid
Каждый из этих подкаталогов включает файлы и подкаталоги, которые содержат информацию о процессе с соответствующим ID процесса.
В каждом каталоге /proc/pid есть подкаталог task, включающий подкаталоги вида task/tid, которые содержат информацию о каждой нить процесса, где tid — ID нити ядра.
Подкаталоги /proc/pid видимы при обходе /proc с помощью getdents(2) (и поэтому они видимы программам подобным ls(1), которые используются для просмотра содержимого /proc).
Подкаталоги /proc/tid
В каждом из этих подкаталогов содержатся файлы и подкаталоги с информацией о нити с соответствующим ID нити. Содержимое этих каталогов такое же как у соответствующих каталогов /proc/pid/task/tid.
Подкаталоги /proc/tid не видимы при обходе /proc с помощью getdents(2) (и поэтому они не видимы программам подобным ls(1), которые используются для просмотра содержимого /proc).
/proc/self
Когда процесс обращается по этой символьной ссылке, она указывает на каталог /proc/pid самого процесса.
/proc/thread-self
Когда нить обращается по этой символьной ссылке, она указывает на каталог /proc/self/task/tid самого процесса.
/proc/[a-z]*
Другие файлы и подкаталоги в /proc предоставляют информацию о системе.

Всё перечисленное выше далее будет описано подробней.

ЗАМЕЧАНИЯ

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)

Файлы исходного кода ядра Linux: Documentation/filesystems/proc.rst, Documentation/admin-guide/sysctl/fs.rst, Documentation/admin-guide/sysctl/kernel.rst, Documentation/admin-guide/sysctl/net.rst и Documentation/admin-guide/sysctl/vm.rst.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Kogan, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

31 октября 2023 г. Linux man-pages 6.06