[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Свойства директории

Директории используются для иерархической организации других файлов,
включая и другие директории. Пользовательский процесс может открывать
директорию только для чтения. Только операционная система может
производить для вас запись в директорию, если вы используете link(2)
или unlink(2).
Формат записи в директории выглядит так:
/*
* File-system independent directory entry.
*/
struct dirent {
       ino_t           d_ino;  /* "inode number" of entry */
       off_t           d_off;  /* offset of disk directory entry */
       unsigned short  d_reclen;       /* length of this record */
       char            d_name[1];      /* name of file */
};

Первое поле, d_ino, представляет собой уникальный inode-номер файла.
Этот номер определяет inode, который содержит всю управляющую
информацию о файле и информацию о его состоянии. Поле d_name[]
содержит имя файла. Максимальное количество  символов, которое может
содержаться в имени файла, зависит от реализации. Заметьте, что имя
файла не содержится в inode. Это дает дополнительную гибкость,
позволяя иметь несколько записей об одном файле в одной или в
различных директориях; имена в различных директориях также могут быть
различными. Запись в директории называется связью.
Записи в директории удаляются путем установки inode-номера в ноль.
Директории могут только увеличиваться в размере, так как место,
занятое стертой записью, остается в директории. Поэтому могут
существовать большие директории с маленьким числом записей. Новые
записи используют пространство из-под стертых записей, когда это
возможно.
Права доступа для директорий ведут себя не так, как для файлов:
на чтение: Разрешает считывать  содержимое  директории.  Например,  вы
           можете использовать  команду ls(1)  без опций для просмотра
           директории.
на изменение:  Позволяет добавлять и удалять файлы из директории.
на исполнение: Позволяет осуществлять  поиск в  директории.  Право  на
           исполнение требуется,  если вы хотите установить директорию
           как  текущую.   Кроме  того  все  компоненты-директории  из
           путевого имени  должны быть исполняемыми, хотя и не обязаны
           иметь право на чтение, когда вы читаете файл или исполняете
           команду. Требование  доступа на исполнение для компонентов-
           директорий путевого имени распространяется на все системные
           вызовы, которые получают путевое имя в качестве параметра.
Хотя вы можете не иметь право на чтение из директории, если вы имеете
право на исполнение для нее и знаете имена файлов и поддиректорий в
этой директории, то вы можете распечатывать или исполнять файлы из
нее, в зависимости от прав доступа к файлам.
ls -ld распечатывает информацию о директории (по умолчанию - о текущей
директории). Эта команда не выдает информацию о файлах в директории.
Такую информацию выдает команда ls -l.
                         СВОЙСТВА ДИРЕКТОРИИ
.    используется для организации обычных файлов, программных каналов,
специальных файлов и других директорий
.    формат, требуемый операционной системой
.    содержит имена файлов и inode-номера
.    записи в директории называются связями
.    нет ограничения глубины вложенности поддиректорий
.    права доступа
    -     r: право на чтение

    -     w: право на запись

    -     x: право на поиск