Краткое имя. Имя, не содержащее специального метасимвола косая черта (/), является кратким именем файла. По краткому имени можно сослаться на файлы текущего каталога. Например, команда ls -l profile требует получить полную информацию о файле profile в текущем каталоге.
Относительное имя. Имя, не начинающееся с символа косой черты (/), но включающее такой символ. Оно ссылается на файл относительно текущего каталога. При этом для ссылки на файл или каталог в каком-то другом каталоге используется метасимвол косой черты (/). Например, команда ls -l../profile требует получить полную информацию о файле profile в родительском каталоге текущего каталога, а команда vi doc/text.txt требует открыть в редакторе vi файл text.txt в подкаталоге doc текущего каталога.
Полное имя. Имя, начинающееся с символа косой черты (/). Оно ссылается на файл относительно корневого каталога. Это имя еще называют абсолютным или именем от корня, т. к. оно, в отличие от предыдущих способов задания имени, ссылается на один и тот же файл независимо от текущего каталога. Например, команда ls -l /home/user01/profile требует получить полную информацию о файле profile в каталоге /home/user01 независимо от того, в каком каталоге она выполняется.
Другие символы, кроме косой черты, не имеют в именах файлов UNIX особого значения (это не метасимволы). В большинстве файловых систем имена файлов могут иметь длину до 255 символов. Имя может содержать практически любые символы, кроме: /; \; ?; >; <; |; *; «. При этом расширение файла (тип файла в ОС MS DOS – точка и три символа) является просто частью имени, как и другие символы, и никакой другой функции не выполняет. Следует отметить, что ОС UNIX чувствительна к регистру символов, поэтому, например, имена файлов File и file будут различными.
Для изменения текущего каталога используется команда cd [каталог]. Если каталог не указан, используется значение переменной среды $HOME (обычно это начальный каталог пользователя). Чтобы сделать новый каталог текущим (войти в каталог), нужно иметь для него право на выполнение.
Для просмотра информации о типах (и других атрибутах) файлов в ОС UNIX используется команда ls, которая выдает информацию об указанных файлах или о файлах и каталогах в текущем каталоге (если файл не задан). Формат и подробность выдаваемой информации зависит от опций. Основным форматом результатов ls является так называемый длинный листинг (задаваемый опцией -l). Например, команда ls -l выведет длинный листинг текущего каталога.
В UNIX существует несколько типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над ними.
Обычный файл. Представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. К этим файлам относятся текстовые файлы, двоичные данные и выполняемые программы.
В длинном листинге (выводимом командой ls – l) признаком обычного файла является дефис (-) в первой позиции первого столбца, например:
-rw-rw-r-- 1 root sys 8296 Фев 23 15:39 ps_data
Обычные файлы создаются текстовыми редакторами (текстовые), компиляторами (двоичные), прикладными программами с помощью соответствующего системного вызова или путем перенаправления вывода, например: cat>f1.txt или >f1.txt (создается файл f1.txt в текущем каталоге). При этом используется перенаправление со стандартного ввода – клавиатуры в файл. Закончить ввод данных с клавиатуры можно с помощью комбинации клавиш Ctrl + с. Команда cat >>file добавляет данные в файл, а не перезаписывает его.
Каталог. С помощью каталогов формируется логическое дерево файловой системы. Каталог – это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию – метаданные, позволяющие операционной системе производить действия с этими файлами. Каталоги определяют положение файла в дереве файловой системы. В длинном листинге признаком каталога является символ d в первой позиции первого столбца:
drwxr - xr - x 2 informix informix 115 Фев 24 13:05 txt
Каталоги создаются командой mkdir.
Специальный файл устройства. Этот тип файлов обеспечивает доступ к физическим устройствам. В UNIX различают символьные (character special device) и блочные (block special device) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
Символьные файлы устройств используются для небуферизованного обмена данными с устройством. Блочные файлы устройств позволяют производить обмен данными в виде пакетов фиксированной длины – блоков.
В длинном листинге признаком специального символьного и блочного устройств являются символы с и b в первой позиции первого столбца, соответственно:
crw------- 1 root sys 77, 0 Фев 14 14:03 nv@0,0:0
brw-r----- 1 root sys 29, 0 Апр 20 2001 sd@0,0:a
Специальные файлы устройства создаются командой mknod.
Создавать специальные файлы устройств обычно может только пользователь root.
FIFO – именованный канал. Такой файл используется для связи между процессами по принципу очереди. Именованные каналы впервые появились в UNIX System V, но большинство современных систем поддерживают этот механизм.
В длинном листинге признаком именованного канала является символ p в первой позиции.
Именованные каналы создаются командой mknod: mknod имя p.
Связь. Каталог содержит имена файлов и указатели на их метаданные. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе. Стандарт POSIX (Portable Operating System Interface) требует реализовать поддержку двух типов связей – жестких и символических.
Жесткой связью (hard link) считается элемент каталога, указывающий непосредственно на некоторый индексный дескриптор. Жесткие связи очень эффективны, но у них существуют определенные ограничения, т. к. они могут создаваться только в пределах одной физической файловой системы. Когда создается такая связь, связываемый файл должен уже существовать. Кроме того, каталоги не могут связываться жесткой связью.
Символическая связь (symbolic link) – это специальный файл, который содержит путь к другому файлу. Указание на то, что данный элемент каталога является символической связью, находится в индексном дескрипторе. Поэтому обычные команды доступа берут из файла, имя которого приведено в связи, вместо получения данных из физического файла. Этот путь может указывать на что угодно: это может быть каталог, он может даже находиться в другой физической файловой системе, более того, указанного файла может и вовсе не быть.
Количество жестких связей файла (а также количество файлов в каталоге, если файл является каталогом) отображается во втором поле длинного листинга, например 2:
- rw - r -- r -- 2 ivanov 50 643 Мар 26 15:37 f 3. txt
Для создания связей используется команда ln: ln [-s] исходный_файл цель.
В результате выполнения создается жесткая (по умолчанию) или символическая (если указана опция -s) связь с заданным именем цель. Если файл с таким именем уже существует, он перезаписывается. Если цель не указана, то создается связь на указанный исходный_файл с таким же именем в текущем каталоге.
В длинном листинге признаком символической связи является символ l в первой позиции первого столбца:
lrwxrwxrwx 1 ivanov 50 643 Мар 26 15:57 f 4 -> f 2
Сокет. Сокеты позволяют представить в виде файла в логической файловой системе сетевое соединение. Создание сокетов выходит за пределы данного курса, хотя понятно, что для этого ядро предлагает соответствующий системный вызов. В длинном листинге признаком сокета является символ s в первой позиции первого столбца.
К основным операциям для работы с файлами, помимо создания и просмотра характеристик, можно отнести копирование (команда cp), удаление (rm,rmdir) и перемещение (переименование) (mv), а также просмотр содержимого (команда cat).
При работе в консольном режиме часто используется файловый менеджер Midnight Commander, который запускается командой mc. В этом случае для просмотра и редактирования файлов используется клавиша F4. Копирование осуществляется клавишей F5, переименование (перемещение) – F6, создание каталога – F7, удаление – F8. Скрытие (открытие) окна файлового менеджера выполняется комбинацией Ctrl+ o.
4.4.2. Права доступа к файлам
Каждый пользователь UNIX (не говоря уже о системном администраторе) должен управлять дисковым пространством. Пользователь несет ответственность за содержимое своего начального каталога и обеспечение целостности любых имеющихся у него данных. Целостность данных обеспечивается проверкой и изменением прав доступа. Защищая файлы и каталоги, пользователь предотвращает неавторизированный доступ.
Каждый файл в ОС UNIX содержит набор прав доступа, по которому определяется, как пользователь взаимодействует с данным файлом. Этот набор хранится в индексном дескрипторе данного файла в виде целого значения, из которого обычно используется 12 битов. Причем каждый бит используется как переключатель, разрешая (значение 1) или запрещая (значение 0) тот или иной доступ.
Три первых бита устанавливают различные виды поведения при выполнении. Оставшиеся девять делятся на три группы по три, определяя права доступа соответственно для владельца, группы и остальных пользователей. Каждая группа задает права на чтение (r, read), запись (w, write) и выполнение (x, execute). Владелец может разрешить или запретить доступ к файлам для членов группы. Администратор (root) всегда имеет полные права на все объекты.
Базовые биты прав доступа представлены в табл. 4. В первом столбце таблицы находится восьмеричное значение, задающее соответствующий бит, во втором столбце представлен вид этого бита в первом поле длинного листинга и в третьем – право, задаваемое этим битом.
|
Таблица 4
|
Права доступа к файлам в ОС UNIX
|
Восьмеричное значение
|
Вид в столбце прав доступа
|
Право или назначение бита
|
0400
|
-r--------
|
Право владельца на чтение
|
0200
|
--w-------
|
Право владельца на запись
|
0100
|
---x------
|
Право владельца на выполнение
|
0040
|
----r-----
|
Право группы на чтение
|
0020
|
-----w----
|
Право группы на запись
|
0010
|
------x---
|
Право группы на выполнение
|
0004
|
-------r--
|
Право всех прочих на чтение
|
0002
|
--------w-
|
Право всех прочих на запись
|
0001
|
---------x
|
Право всех прочих на выполнение
|
Восьмеричное значение
|
Вид в столбце прав доступа
|
Право или назначение бита
|
4000
|
---s------
|
Установленный эффективный идентификатор владельца (бит SUID)
|
2000
|
------s---
|
Установленный эффективный идентификатор группы (бит SПID)
|
1000
|
---------t
---------T
|
Клейкий (sticky) бит. Вид для каталогов и выполняемых файлов соответственно.
|
|