| |
Каждому файлу на диске соответствует один и только один индексный дескриптор файла, который идентифицируется своим порядковым номером - индексом файла. Это означает, что число файлов, которые могут быть созданы в файловой системе, ограничено числом индексных дескрипторов, которое либо явно задается при создании файловой системы, либо вычисляется исходя из физического объема дискового раздела.
Индексный дескриптор файла имеет следующее строение.
| Название поля | Тип | Описание | |
1.2emi_mode | 
USHORT | 
Тип и права доступа к данному файлу | |
i_uid | 
USHORT | 
Идентификатор владельца файла (Owner UID) | |
i_size | 
ULONG | 
Размер файла в байтах | |
i_atime | 
ULONG | 
Время последнего обращения к файлу (Access time) | |
i_ctime | 
ULONG | 
Время создания файла | |
i_mtime | 
ULONG | 
Время последней модификации файла | |
i_dtime | 
ULONG | 
Время удаления файла | |
i_gid | 
USHORT | 
Идентификатор группы (GID) | |
i_links_count | 
USHORT | 
Счетчик числа связей (Links count) | |
i_blocks | 
ULONG | 
Число блоков, занимаемых файлом | |
i_flags | 
ULONG | 
Флаги файла (File flags) | |
i_reserved1 | 
ULONG | 
Зарезервировано для ОС | |
i_block | 
ULONG[15] | 
Указатели на блоки, в которых записаны данные файла | 
i_version | 
ULONG | 
Версия файла (для NFS) | |
i_file_acl | 
ULONG | 
ACL файла | |
i_dir_acl | 
ULONG | 
ACL каталога | |
i_faddr | 
ULONG | 
Адрес фрагмента (Fragment address) | |
i_frag | 
UCHAR | 
Номер фрагмента (Fragment number) | |
i_fsize | 
UCHAR | 
Размер фрагмента (Fragment size) | |
i_pad1 | 
USHORT | 
Заполнение | |
i_reserved2 | 
ULONG[2] | 
Зарезервировано | 
Поле типа и прав доступа к файлу представляет собой двух- байтовое слово, каждый бит которого служит флагом, индицирующим отношение файла к определенному типу или установку одного конкретного права на файл.
| Идентификатор | Значение | Назначение флага (поля) | |
1.2emS_IFMT | 
F000 | 
Маска для типа файла | |
S_IFSOCK | 
A000 | 
Доменное гнездо (socket) | |
S_IFLNK | 
C000 | 
Символическая ссылка | |
S_IFREG | 
8000 | 
Обычный (regular) файл | |
S_IFBLK | 
6000 | 
Блок-ориентированное устройство | |
S_IFDIR | 
4000 | 
Каталог | |
S_IFCHR | 
2000 | 
Байт-ориентированное (символьное) устройство | |
S_IFIFO | 
1000 | 
Именованный канал (fifo) | |
S_ISUID | 
0800 | 
SUID - бит смены владельца S_ISGID 0400 SGID - бит смены
группы | 
|
S_ISVTX | 
0200 | 
Бит сохранения задачи (sticky bit) | |
S_IRWXU | 
01C0 | 
Маска прав владельца файла | |
S_IRUSR | 
0100 | 
Право на чтение | |
S_IWUSR | 
0080 | 
Право на запись | |
S_IXUSR | 
0040 | 
Право на выполнение | |
S_IRWXG | 
0038 | 
Маска прав группы | |
S_IRGRP | 
0020 | 
Право на чтение | |
S_IWGRP | 
0010 | 
Право на запись | |
S_IXGRP | 
0008 | 
Право на выполнение | |
S_IRWXO | 
0007 | 
Маска прав остальных пользователей | |
S_IROTH | 
0004 | 
Право на чтение | |
S_IWOTH | 
0002 | 
Право на запись | |
S_IXOTH | 
0001 | 
Право на выполнение | 
Среди индексных дескрипторов имеется несколько дескрипторов, которые зарезервированы для специальных целей и играют особую роль в файловой системе. Это следующие дескрипторы
| Идентификатор | Значение | Описание | |
1.2emEXT2_BAD_INO | 
1 | 
Индексный дескриптор, в котором перечислены адреса дефектных блоков на диске (Bad blocks inode) | |
EXT2_ROOT_INO | 
2 | 
Индексный дескриптор корневого каталога файловой системы (Root inode) | |
EXT2_ACL_IDX_INO | 
3 | 
ACL inode | |
EXT2_ACL_DATA_INO | 
4 | 
ACL inode | |
EXT2_BOOT_LOADER_INO | 
5 | 
Индексный дескриптор загрузчика (Boot loader inode) | |
EXT2_UNDEL_DIR_INO | 
6 | 
Undelete directory inode | |
EXT2_FIRST_INO | 
11 | 
Первый незарезервированный индексный дескриптор | 
Самый важный дескриптор в этом списке - дескриптор корневого каталога. Этот дескриптор указывает на корневой каталог, который, подобно всем каталогам, состоит из записей следущей структуры:
| Название поля | Тип | Описание | |
1.2eminode | 
ULONG | 
номер индексного дескриптора (индекс) файла | |
rec_len | 
USHORT | 
Длина этой записи | |
name_len | 
USHORT | 
Длина имени файла | |
name | 
CHAR[0] | 
Имя файла | 
Отдельная запись в каталоге не может пересекать границу блока (то есть должна быть расположена целиком внутри одного блока). Поэтому, если очередная запись не помещается целиком в данном блоке, она переносится в следующий блок, а предыдущая запись продолжается таким образом, чтобы она заполнила блок до конца.
| 
Закладки на сайте Проследить за страницей  | 
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру  |