Читаем Linux для пользователя полностью

Поле типа и прав доступа к файлу представляет собой двухбайтовое слово, каждый бит которого служит флагом, индицирующим отношение файла к определенному типу или установку одного конкретного права на файл.

Таблица 16.5. Структура поля, задающего тип и права доступа

ИдентификаторЗначениеНазначение флага (поля)
S_IFMTF000Маска для типа файла
S_IFSOCKA000Доменное гнездо (socket)
S_IFLNKC000Символическая ссылка
S_IFREG8000Обычный (regular) файл
S_IFBLK6000Блок-ориентированное устройство
S_IFDIR4000Каталог
S_IFCHR2000Байт-ориентированное (символьное) устройство
S_IFIFO1000Именованный канал (fifo)
S_ISUID0800SUID - бит смены владельца
S_ISGID0400SGID - бит смены группы
S_ISVTX0200Бит сохранения задачи (sticky bit)
S_IRWXU01C0Маска прав владельца файла
S_IRUSR0100Право на чтение
S_IWUSR0080Право на запись
S_IXUSR0040Право на выполнение
S_IRWXG0038Маска прав группы
S_IRGRP0020Право на чтение
S_IWGRP0010Право на запись
S_IXGRP0008Право на выполнение
S_IRWXO0007Маска прав остальных пользователей
S_IROTH0004Право на чтение
S_IWOTH0002Право на запись
S_IXOTH0001Право на выполнение

Среди индексных дескрипторов имеется несколько дескрипторов, которые зарезервированы для специальных целей и играют особую роль в файловой системе (табл. 16.6).

Таблица 16.6. Особые индексные дескрипторы

ИдентификаторЗначениеОписание
EXT2_BAD_INO1Индексный дескриптор, в котором перечислены адреса дефектных блоков на диске (Bad blocks inode)
EXT2_ROOT_INO2Индексный дескриптор корневого каталога файловой системы (Root inode)
EXT2_ACL_IDX_INO3ACL inode
EXT2_ACL_DATA_INO4ACL inode
EXT2_BOOT_LOADER_INO5Индексный дескриптор загрузчика (Boot loader inode)
EXT2_UNDEL_DIR_INO6Индексный дескриптор каталога для удаленных файлов (Undelete directory inode)
EXT2_FIRST_INO11Первый незарезервированный индексный дескриптор

Самый важный дескриптор в этом списке - дескриптор корневого каталога. Этот дескриптор указывает на корневой каталог, который, подобно всем каталогам, представляет собой связанный список, состоящий из записей переменной длины. Каждая запись имеет следующую структуру (табл. 16.7):

Таблица 16.7. Структура дескриптора, описывающего корневой каталог

Название поляТипОписание
InodeULONGНомер индексного дескриптора (индекс) файла
Rec_lenUSHORTДлина этой записи
Name_lenUSHORTДлина имени файла
NameCHAR[0]Имя файла

Использование записей переменной длины позволяет использовать длинные имена файлов без пустой траты дискового пространства. Отдельная запись в каталоге не может пересекать границу блока (т. е. должна быть расположена целиком внутри одного блока). Поэтому, если очередная запись не помещается целиком в данном блоке, она переносится в следующий блок, а предыдущая запись продолжается таким образом, чтобы она заполнила блок до конца.

<p>16.4. Система адресации данных</p>

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

Перейти на страницу:

Похожие книги