Брандмауэры и специальное программное обеспечение 8 Часть 4
Вид материала | Реферат |
СодержаниеФайловая система /proc Файловая система /ргос Таблица 6.1. Файлы каталога, описывающего состояние процесса Имя Содержимое |
- Муниципальное общеобразовательное учреждение средняя общеобразовательная школа №12, 174.77kb.
- Управление экономикой и создание экономических информационных систем Изучив данную, 148.93kb.
- Программное обеспечение ЭВМ, 209.59kb.
- Программное обеспечение вычислительной системы, 824.71kb.
- Учебная программа (Syllabus) Дисциплина: Интерфейсы компьютерных систем (iks 3304), 321.31kb.
- Реферат по Информационной безопасности Тема: «Антивирусы», 711.1kb.
- Пк программный комплекс; по программное обеспечение; ппо прикладное программное обеспечение, 208.41kb.
- Лекция 4 Обеспечивающие подсистемы асу. Математическое, программное, лингвистическое,, 59.3kb.
- Математическое и программное обеспечение систем оперативной оценки характеристик сложных, 247.51kb.
- Учебная программа (Syllabus) Дисциплина «Инструментальные средства разработки программ», 374.12kb.
Заключение
В этой главе был рассмотрен процесс монтирования файловых систем. Было рассказано про точки монтирования и параметры монтирования, имеющие отношение к безопасности. Я рассказал вам о том, какому риску вы подвергаете свою систему, разрешая обычным пользователям выполнять монтирование файловых систем. Все же, несмотря на определенный риск, без возможности монтирования обычным пользователям подчас не обойтись, однако прежде чем предоставлять им такую возможность, вы должны четко представлять себе возможные последствия.
Только суперпользователь может монтировать все, что захочет, туда, куда захочет. Остальным пользователям разрешается монтировать только файловые системы, указанные в файле /etc/fstab, при этом монтирование будет выполнено с учетом указанных в этом файле параметров. Таким образом, чтобы обеспечить безопасность монтирования, необходимо грамотно настроить записи этого файла.
6
Файловая система /proc
В данной главе рассматриваются следующие вопросы: - файловая система /ргос;
- каталог /proc/sys;
- файловая система /dev/pts;
- соображения безопасности для /ргос.
Файловая система /ргос не похожа на все остальные файловые системы. За исключением /dev/pts (псевдотерминальные устройства или попросту псевдотерминалы, о которых рассказывается далее), все остальные файловые системы представляют собой ровно то, что предполагает сам термин «файловая система»: некоторым образом структурированный набор (система) файлов на некотором носителе. Все эти файлы существуют физически, даже псевдотерминалы, однако файловая система /ргос существует лишь во время работы операционной системы. И хотя псевдотерминалы, как и /ргос, прекращают свое существование при нормальном завершении работы, однако при грубом выключении питания соответствующие им файлы все-таки остаются на жестком диске (конечно же, в процессе следующего запуска системы эти файлы будут удалены с диска). В отличие от псевдотерминалов файловая система /ргос существует в оперативной памяти и больше нигде. Иначе говоря, файловая система /ргос — это иллюзия файловой системы, которая формируется и поддерживается операционной системой.
Файловая система /ргос
Файловую систему /ргос можно сравнить с окном, при помощи которого процессы и пользователи могут наблюдать за состоянием операционной системы. По большей части, именно в этом и состоит ее назначение — предоставлять информацию о различных частях системы. И хотя данная глава не слишком большая, но концепции, затрагиваемые в ней, весьма важны, поскольку имеют непосредственное отношение к основам Linux.
При желании можно скомпоновать ядро, в котором не будет поддержки /ргос, но в этом нет особого смысла. Очень многие программы и утилиты в процессе своего функционирования обращаются к файловой системе/ргос для получения необходимой информации о состоянии системы. Если механизм /ргос отсутствует в системе, все использующие его программы и утилиты либо не смогут работать, либо будут вынуждены получать необходимую информацию из других источников. Однако другие источники информации зачастую менее надежны и предлагают информацию в меньшем объеме. Чтобы убедиться в том, что поддержка /ргос добавлена в ядро, в процессе конфигурирования ядра следует перейти в меню File Systems и выбрать поддержку файловой системы /ргос (по умолчанию поддержка файловой системы /ргос включена). В файле .config поддержка /ргос включается благодаря наличию строки:
CONFIG_PROC_FS=y
Использовать поддержку /ргос в виде модуля нельзя.
Если поддержка /ргос в ядре уже имеется, то система готова использовать ее, однако, как и для других механизмов Linux, эту файловую систему можно включать и отключать. Активация и деактивация файловой системы /ргос осуществляется при помощи файла /etc/fstab. Поскольку /ргос является хотя и фиктивной, но файловой системой, то прежде чем ее можно будет использовать, она, как и любая другая файловая система, должна быть смонтирована. Для успешного монтирования любой файловой системы необходимо, чтобы существовал каталог, в который она монтируется, и /ргос здесь не исключение. Если удалить каталог /ргос, то монтировать ее будет некуда, и потому вместо /ргос вы получите сообщение об ошибке. Соответствующая запись файла /etc/fstab выглядит следующим образом: /ргос /ргос ргос defaults О О
На месте пути к файлу устройства здесь стоит /ргос, поскольку эта файловая система существует внутри ядра, а не на устройстве. Монтируется она в каталог / ргос, с типом ргос. В ее отношении никогда не выполняется каких-либо проверок, и она не попадает под действие команды dump. Действительно, большинство файлов в /ргос отображают сиюминутное состояние операционной системы и, как следствие, доступны только для чтения, поэтому их бессмысленно проверять или сохранять для дальнейшего восстановления. Исключение составляют файлы из /proc/sys, позволяющие изменять состояние системы и потому доступные и для записи, но восстановление этих файлов из резервной копии почти наверняка приведет систему в нестабильное состояние, так что резервное копирование им не нужно.
Файловая система /ргос очень динамична. Некоторые из ее частей меняются фактически постоянно, интенсивность изменений зависит от нагрузки на систему. Поэтому любые два снимка ее содержимого, скорей всего, будут различаться. На листинге 6.1. показан один из снимков содержимого /ргос.
Листинг 6.1. Содержимое /рте
dr-xr-xr-x 58 root root 0 Nov 15 19:01 .
drwxr-xr-x 21 root root 1024 Nov 15 12:02 ..
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1076
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1079
dr-xr-xr-x 3 dns dns 0 Nov 16 07:46 1088
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1092
dr-xr-xr-x 3 bin root 0 Nov 16 07:46 1094
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1176
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1181
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1190
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1202
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1263
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1270
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1271
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1284
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1286
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1287
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1288
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1317
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1318
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1319
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1320
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1321
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1363
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1371
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1372
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1373
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1374
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1375
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1618
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1619
dr-xr-xr-x 3 nobody nobody 0 Nov 16 07:46 1620
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1741
dr-xr-xr-x 3 root root 0 Nov 16 07:46 1800
dr-xr-xr-x 3 david david 0 Nov 16 07:46 1892
dr-xr-xr-x 3 root root 0 Nov 16 07:46 2
dr-xr-xr-x 3 root root 0 Nov 16 07:46 3
dr-xr-xr-x 3 root root 0 Nov 16 07:46 4
dr-xr-xr-x 3 root root 0 Nov 16 07:46 4856
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4858
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4914
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4915
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4917
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4963
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4964
dr-xr-xr-x 3 david david 0 Nov 16 07:46 4965
dr-xr-xr-x 3 root root 0 Nov 16 07:46 4967
dr-xr-xr-x 3 root root 0 Nov 16 07:46 4968
dr-xr-xr-x 3 root root 0 Nov 16 07:46 5
dr-xr-xr-x 3 root root 0 Nov 16 07:46 5038
-r--r--r-- 1 root root 0 Nov 16 07:46 apm
dr-xr-xr-x 4 root root 0 Nov 16 07:46 bus
-r--r--r-- 1 root root 0 Nov 16 07:46 cmdline
-r--r--r-- 1 root root 0 Nov 16 07:46 cpuinfo
-r--r--r-- 1 root root 0 Nov 16 07:46 devices
-r--r--r-- 1 root root 0 Nov 16 07:46 dma
-r--r--r-- 1 root root 0 Nov 16 07:46 fb
-r--r--r-- 1 root root 0 Nov 16 07:46 filesystems
dr-xr-xr-x 2 root root 0 Nov 16 07:46 fs
dr-xr-xr-x 4 root root 0 Nov 16 07:46 ide
-r--r--r-- 1 root root 0 Nov 16 07:46 interrupts
-r--r--r-- 1 root root 0 Nov 16 07:46 ioports
-r-------- 1 root root 134221824 Nov 16 07:46 kcore
-r-------- 1 root root 0 Nov 15 19:01 kmsg
-r--r--r-- 1 root root 0 Nov 16 07:46 ksyms
-r--r--r-- 1 root root 0 Nov 16 07:46 loadavg
-r--r--r-- 1 root root 0 Nov 16 07:46 locks
-r--r--r-- 1 root root 0 Nov 16 07:46 meminfo
-r--r--r-- 1 root root 0 Nov 16 07:46 misc
-r--r--r-- 1 root root 0 Nov 16 07:46 modules
-r--r--r-- 1 root root 0 Nov 16 07:46 mounts
dr-xr-xr-x 3 root root 0 Nov 16 07:46 net
-r--r--r-- 1 root root 0 Nov 16 07:46 partitions
-r--r--r-- 1 root root 0 Nov 16 07:46 pci
-r--r--r-- 1 root root 0 Nov 16 07:46 rtc
dr-xr-xr-x 2 root root 0 Nov 16 07:46 scsi
Irwxrwxrwx 1 root root 64 Nov 16 07:46 self -> 5038
-r--r--r-- 1 root root 0 Nov 16 07:46 slabinfo
-r--r--r-- 1 root root 0 Nov 16 07:46 stat
-r--r--r-- 1 root root 0 Nov 16 07:46 swaps
dr-xr-xr-x 9 root root 0 Nov 16 07:46 sys
dr-xr-xr-x 4 root root 0 Nov 16 07:46 tty
-r--r--r-- 1 root root 0 Nov 16 07:46 uptime
•r--r--r-- 1 root root 0 Nov 16 07:46 version
Первое, что бросается в глаза, это размер файлов. Размер практически всех файлов и каталогов в системе /ргос равен нулю. Ненулевой размер имеет файл self, являющийся символической ссылкой, и файл kcore, который соответствует системной памяти.
Обратите внимание, что любой из файлов доступен только для чтения даже для владельца файла (в большинстве случаев владельцем является пользователь root). Именно благодаря этому вы не сможете выполнять в отношении системы /ргос какие-либо манипуляции, вы сможете только просматривать ее содержимое.
Более внимательное изучение листинга позволяет разделить его на две части: файлы и каталоги с числовыми именами и файлы и каталоги с именами символическими. Владельцем большинства числовых имен является root, но встречаются и имена с другими владельцами. На самом деле каждое такое число — это идентификатор процесса (Process ID, PID). Процессы с такими идентификаторами выполнялись в системе в момент, когда был получен этот листинг. Таким образом, для каждого работающего в системе процесса в каталоге /ргос существует подкаталог, имя которого совпадает с идентификатором этого процесса. В этом подкаталоге содержится информация об этом процессе. Выполнив команду ps а их, можно обнаружить, что разрешения в /ргос для каждого из процессов соответствуют владельцу и группе соответствующего процесса в списке процессов. На листинге 6.2. показано содержимое одного из таких подкаталогов:
Листинг 6.2. Содержимое некоторого каталога /ргос/РЮ
-r--r--r-- 1 root root 0 Nov 16 08:23 status
-r--r--r-- 1 root root 0 Nov 16 08:23 statm
-r--r--r-- 1 root root 0 Nov 16 08:23 stat
Irwx------ 1 root root 0 Nov 16 08:23 root -> /
-rw------- 1 root root 0 Nov 16 08:23 mem
рr--r--r-- 1 root root 0 Nov 16 08:23 maps
dr-x------ 2 root root 0 Nov 16 08:23 fd
Irwx----- 1 root root 0 Nov 16 08:23 exe -> /usr/sbin/klogd
-r-------- 1 root root 0 Nov 16 08:23 environ
Irwx----- 1 root root 0 Nov 16 08:23 cwd -> /
-r--r--r-- 1 root root 0 Nov 16 08:23 cmdline
dr-xr-xr-x 58 root root 0 Nov 15 19:01 ..
dr-xr-xr-x 3 root root 0 Nov 16 08:23 .
В любом из каталогов содержатся одни и те же файлы (табл. 6.1). Некоторые из них являются символическими ссылками, указывающими в другие места системы, другие файлы содержат в себе некоторую информацию о процессе. Именно ее, только в обработанном и отформатированном виде, выводят такие утилиты, как ps, top и т. п.
Таблица 6.1. Файлы каталога, описывающего состояние процесса
Имя Содержимое
cmdline Аргументы командной строки
cwd Ссылка на рабочий каталог (каталог, из которого была выполнена породившая процесс команда)
environ Переменные окружения
ехе Ссылка на исполняемый файл процесса
fd Каталог, содержащий дескрипторы файлов процесса, ссылки на другие файлы и т. п.
1г-х----- 1 root root 64 Dec 13 08:56 0 -> /dev/null
l-wx----- 1 root root 64 Dec 13 08:56 1 -> /var/log/xdm-errors
l-wx----- 1 root root 64 Dec 13 08:56 2 -> /var/log/xdm-errors
lrwx----- 1 root root 64 Dec 13 08:56 3-> socket:[1556]
lrwx----- 1 root root 64 Dec 13 08:56 5 -> socket:[573]
maps Исполняемые файлы и библиотеки, отображенные в память процесса
mem Память процесса
root Ссылка на корневой каталог процесса (обычно /)
stat Состояние процесса
statm Состояние памяти процесса
status Состояние процесса в понятном для человека виде (формат файлов stat и statm не понятен для человека)
Что касается второй части листинга — файлов с символьными именами, — то большинство перечисленных в нем имен должны быть вам понятны. О характере содержимого этих файлов можно догадаться, взглянув на имя. Файл interrupts (прерывания), например, содержит ровно то, что и предполагает его название: список всех прерываний и устройств, использующих их. Определенная информация содержится также в подкаталогах. Структура каталога /ргос на всех системах практически одинакова. Присутствие некоторого подкаталога для определенной конфигурации может оказаться бессмысленным, однако из соображений стандартизации этот подкаталог все равно будет присутствовать в /ргос, просто он будет абсолютно пустым. Например, даже если в вашей системе нет никаких устройств SCSI, все равно вы сможете обнаружить в каталоге /ргос подкаталог scsi, который будет пустым. В системе, базирующейся на SCSI, контроллер IDE может полностью отсутствовать, однако даже в этом случае в каталоге /ргос будет присутствовать пустой подкаталог ide2.
Тем, кто интересуется работой с /ргос на уровне системного программирования, следует заглянуть в /usr/src/linux/include/linux/proc_fs.h. Данный файл содержит описания структур данных и функций, позволяющих представлять /ргос в виде дерева в памяти и динамически добавлять в эту систему новые элементы. Еще одним источником информации о /ргос является файл документации /usr/src/ linux/Documentation/proc.txt. И хотя в этом файле собрана далеко не вся информация о /ргос, это единственный более или менее полноценный документ, посвященный данной файловой системе.
При монтировании /ргос создаются все поддерживаемые данной системой каталоги, но не файлы. Файлы создаются только для тех механизмов, которые действительно включены в состав ядра. Например, если поддержка звука была включена в ядро, а значит, присутствует в системе постоянно, то связанный с ней файл sound будет создан непосредственно при монтировании /ргос. Если же поддержка звука реализована в виде отдельных модулей, то соответствующий файл появится в /ргос лишь после загрузки необходимых для поддержки звука модулей. И до тех пор, пока не будет загружен модуль конкретной звуковой карты, этот файл будет пустым. После же загрузки такого модуля из этого файла можно будет узнать, какой модуль был загружен и с какими параметрами3.
Это верно и для других подсистем, таких как ррр, slip и т. д. Связанные с этими подсистемами каталоги всегда будут присутствовать в /ргос, тогда как соответствующие файлы могут отсутствовать. В качестве другого примера рассмотрим привод SCSI CD-ROM, поддерживаемый при помощи модуля. Пусть это будет модуль aha!54x компании Adaptec. Если этот модуль не загружен и привод CD-ROM является единственным SCSI устройством в системе, то изначально каталог /proc/scsi будет абсолютно пустым — в нем не будет существовать ни одного файла. После загрузки модуля aha!54x в этом каталоге появятся два файла: scsiO и sda (или sd(b|c|d), в зависимости от конфигурации устройства). В этих файлах будут содержаться всевозможные сведения об этом устройстве. Затем, после монтирования компакт-диска, появятся новые записи в /proc/filesystems и т. д.
Далее, предположим, что по некоторым причинам система была переведена в однопользовательский режим (уровень выполнения 1), а все файловые системы размонтированы. После этого в системе были смонтированы корневая файловая система в режиме только для чтения и файловая система /ргос. После этого вы хотите монтировать гибкий диск с файловой системой vfat в режиме только для чтения. Так как корневая система доступна лишь для чтения, команда mount не сможет создать файл /etc/mtab, содержащий записи о монтированных файловых системах (в этом случае можно воспользоваться ключом -п, который предписывает команде mount не вносить запись о монтируемой системе в файл /etc/mtab). В результате если вы попробуете узнать о монтированных файловых системах при помощи команд df или mount, гибкий диск будет отсутствовать в списке монтированных файловых систем. В подобной ситуации достоверную информацию о монтированных файловых системах можно получить при помощи /ргос. Заглянув в файл /proc/filesystems, можно увидеть, что в системе включена поддержка vfat, а заглянув в файл /proc/mounts, вы узнаете о том, что именно в настоящий момент монтировано в системе.