Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Redaktsia_4_UP_Linux_-_Osnovnaya_chast.doc
Скачиваний:
57
Добавлен:
06.11.2018
Размер:
2.02 Mб
Скачать

2.9. Файловая система /proc как «зеркало» процессов

В ОС Linux присутствует виртуальная файловая система, монтируемая при загрузке к каталогу /proc (от слова process). В отличие от других файловых систем, размещаемых на внешних машинных носителях, эта файловая система располагается в оперативной памяти, обеспечивает связь с ядром и предназначена для предоставления текущей информации о компьютерной системе (состояние ядра, процессы, параметры компьютера и т. д.), чем представляет большой интерес, в том числе с позиций компьютерной безопасности. Многие из утилит, выводящие информацию о системе (например, ранее рассмотренные команды ps и top), берут исходные данные именно из каталога /proc.

В виртуальной файловой системе /proc размер почти всех файлов равен нулю, и любой пользователь, включая суперпользователя, лишен права на запись в эти файлы. Право на чтение почти всех файлов имеет каждый зарегистрированный пользователь системы. В то же время некоторая часть виртуальных файлов доступна администратору на запись, например для установки параметров ядра.

Объект /proc включает в себя файлы и каталоги с числовыми и символьными именами. Каталоги с числовыми именами содержат информацию о каждом выполняющемся процессе, а само имя каталога образовано от идентификатора выполняемого процесса (PID). При создании процесса соответствующий каталог появляется, а при уничтожении процесса – исчезает. В каждом из таких «числовых» каталогов содержатся одни и те же файловые объекты (табл. 2.1).

Если в процессе выполнения сам исполняемый файл оказался удаленным, ссылка exe позволит восстановить удаленный файл, скопировав его образ из оперативной памяти [7].

В подкаталоге fd (fd – file descriptor) можно получить оперативную информацию обо всех файлах, которые были открыты данным процессом. Именно отсюда берет информацию команда lsof, часто используемая для наблюдения за открытыми файлами.

Виртуальный файл cmdline содержит полные параметры командной строки, использованные при запуске программы. Отсюда информация переписывается в файл истории команд.

Таблица 2.1

Имя файла в подкаталоге /proc/PID

Содержимое файла

cmdline

Список аргументов командной строки процесса (параметры, передаваемые программе). Список представлен одной последовательностью, в которой аргументы отделяются друг от друга байтами вида «0x00»

cwd

Символическая ссылка на каталог, который установлен текущим (рабочим) для процесса (cwd – change working directory)

environ

Переменные окружения (USER, HOME, PATH и др.). Элементы списка разделяются друг от друга байтами вида «0x00»

exe

Ссылка на исполняемый файл процесса

fd

Каталог, содержащий символические ссылки на файлы, открытые данным процессом

maps

Карта распределения адресного пространства процесса в виде форматированного текстового файла

mem

Память процесса

root

Ссылка на корневой каталог процесса (обычно /)

stat

Состояние процесса на момент просмотра

statm

Состояние памяти процесса. Содержит список из 7 чисел, разделенных пробелами. Эти числа:

  • общий размер процесса в мегабайтах

  • размер резидентной части процесса

  • размер совместно используемой памяти

  • размер сегмента кода

  • размер загруженных библиотек

  • объем памяти стека

  • число модифицированных страниц памяти

status

Состояние процесса в виде, предназначенном для пользователя. Файл содержит идентификатор процесса, родительского процесса, реальный и эффективный идентификаторы пользователя, статистику использования памяти и битовые маски, указывающие, какие сигналы процессом перехватываются, игнорируются или блокируются

О назначении файлов и каталогов с символьными именами можно догадаться по этим именам. Например, сведения о последовательных пор-

тах содержатся в файле /proc/tty/driver/serial. Обращение к этим файловым объектам позволяет получить текущую информацию об аппаратной платформе и драйверах устройств, а также много иной интересной информации.

Виртуальный текстовый файл /proc/mounts содержит информацию об уже смонтированных файловых системах. Почти такая же, но более подробная информация записывается в реальный файл /etc/mtab.

Если имеются сомнения в том, что утилита ps правильно отображает все процессы, можно обратиться к каталогу /proc. Достаточно ввести друг за другом две команды:

ls -d /proc/*|grep [0-9]|wc -l

и

ps ax|wc -l

и сравнить результаты. Первый программный конвейер считает имена нумерованных каталогов в каталоге /proc, а второй суммирует процессы, отображаемые утилитой ps. Результаты не должны сильно отличаться. Это поможет в случае подмены злоумышленником утилиты ps.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]