Краткий справочник по командам UNIX - часть 3
Каждый файл имеет сопряженные с ним метаданные, записанные в индексных дескрипторах – inode. Имя файла является указателем на его метаданные (метаданные не содержат указателя на имя файла). Существует 6 типов файлов:
- Обычный файл (regular)
- Каталог (directory)
- Файл внешнего устройства
- Канал с именем (FIFO)
- Связь (link)
- socket
Обычный файл
является наиболее распространенным типом. Для операционной системы такой файл представляется простой последовательностью байтов. Интерпретация содержимого такого файла находится в зоне ответственности прикладной программы, которая с ним работает.
Каталог
– это файл, содержащий имена находящихся в нем файлов и указатели на информацию, позволяющую ОС производить операции над этими файлами. Запись в каталог имеет право только ядро. Каталог представляет собой таблицу, каждая запись в которой соответствует некоторому файлу.
Файл внешнего устройства
обеспечивает доступ к этому прибору. UNIX различает символьные и блочные файлы. Символьные файлы служат для не буферизованного обмена, а блочные предполагают обмен порциями данных фиксированной длины.
Каналы с именем
(FIFO) – это файлы, служащие для связи между процессами.
Файловая система допускает наличие нескольких имен у одного файла. Связь имени файла с его метаданными называется жесткой связью. С помощью команды ln можно создать еще одно имя для файла. Особым типом файла является символическая связь, позволяющей косвенно обращаться к файлу. Символическая связь является особым типом файла.
Socket
служит для взаимодействия между процессами. Интерфейс socket используется, например, для доступа к сети TCP/IP.
Любой файл имеет двух владельцев – собственно создателя и группу (chown, chgrp и chmod). Файл создается не пользователем, а процессом, им запущенным. Атрибуты этого процесс присваиваются и файлу (r, w и x). Имеется также несколько дополнительных атрибутов, среди них sticky bit, который требует сохранения образа \исполняемого файла в памяти после завершения его работы. Атрибуты SUID и GUID позволяют изменить права пользователя в направлении расширения (до уровня создателя файла) на время исполнения данной программы (это используется, например, в случае работы с файлом /etc/passwd). В случае каталогов sticky bit позволяет стереть только файлы, которыми владеет пользователь.