Читаем без скачивания Операционная система UNIX - Андрей Робачевский
Шрифт:
Интервал:
Закладка:
В этом каталоге находятся подкаталоги различных сервисных подсистем — системы печати, электронной почты и т.д. (/usr/spool), исполняемые файлы утилит UNIX (/usr/bin), дополнительные программы, используемые на данном компьютере (/usr/local), файлы заголовков (/usr/include), электронные справочники (/usr/man) и т.д.
/var
В UNIX System V этот каталог является заменителем каталога /usr/spool, используемого для хранения временных файлов различных сервисных подсистем — системы печати, электронной почты и т.д.
/tmp
Каталог хранения временных файлов, необходимых для работы различных подсистем UNIX. Обычно этот каталог открыт на запись для всех пользователей системы.
Владельцы файлов
Файлы в UNIX имеют двух владельцев: пользователя (user owner) и группу[4] (group owner). Важной особенностью является то, что владелец- пользователь может не являться членом группы, владеющей файлом. Это дает большую гибкость в организации доступа к файлам. Совместное пользование файлами можно организовать практически для любого состава пользователей, создав соответствующую группу и установив для нее права на требуемые файлы. При этом для того чтобы некий пользователь получил доступ к этим файлам, достаточно включить его в группу- владельца, и наоборот — исключение из группы автоматически изменяет для пользователя права доступа к файлам.
Для определения владельцев файла достаточно посмотреть подробный листинг команды ls -l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы, соответственно:
1 2 3 4 5 6 7 8
-rw-r--r-- 1 andy group 235520 Dec 22 19:13 pride.tar
-rw-rw-r-- 1 andy student 3450 Nov 12 19:13 exams.quest
Владельцем-пользователем вновь созданного файла является пользователь, который создал файл. Порядок назначения владельца-группы зависит от конкретной версии UNIX. Например, в SCO UNIX владельцем-группой является первичная группа пользователя, создавшего файл, а в Digital UNIX владелец-группа наследуется от владельца группы — каталога, в котором создается файл.[5]
Для изменения владельца файла используется команда chown(1). В качестве параметров команда принимает имя владельца-пользователя и список файлов, для которых требуется изменить данный атрибут. Например, следующая команда установит пользователя sergey владельцем файлов client.c и server.c:
$ chown sergey client.c server.c
Изменение владельца-группы производится командой chgrp(1). Как и chown(1), в качестве параметров команда принимает имя владельца-группы и список файлов, для которых требуется изменить данный атрибут. Например, для установки группы staff в качестве владельца всех файлов текущего каталога, необходимо задать следующую команду:
$ chgrp staff *
Владение файлом определяет тот набор операций, который пользователь может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла (табл. 1.1), может осуществлять только владелец (или суперпользователь), другие операции, такие как чтение, запись и запуск на выполнение (для исполняемых файлов) дополнительно контролируются правами доступа.
Таблица 1.1. Операции изменения владельцев файла
Операция Команда Имеет право выполнять в системе BSD 4.x в системе SVR4 Изменение владельца-пользователя chown(1) суперпользователь владелец файла Изменение владельца-группы chgrp(1) суперпользователь владелец файла только для группы, к которой сам принадлежит (в соответствии с POSIX)Права доступа к файлу
В операционной системе UNIX существуют три базовых класса доступа к файлу, в каждом из которых установлены соответствующие права доступа:
User access (u) Для владельца-пользователя файла Group access (g) Для членов группы, являющейся владельцем файла Other access (о) Для остальных пользователей (кроме суперпользователя)UNIX поддерживает три типа прав доступа для каждого класса: на чтение (read, обозначается символом на запись (write, обозначается символом w) и на выполнение (execute, обозначается символом x).
С помощью команды ls -l можно получить список прав доступа к файлу:
...
-rw-r--r-- 1 andy group 36482 Dec 22 19:13 report.txt.1
drwxr-xr-- 2 andy group 64 Aug 15 11:03 temp
-rwxr-xr-- 1 andy group 4889 Dec 22 15:13 a.out
-rw-r--r-- 1 andy group 7622 Feb 11 09:13 cont.c
...
Права доступа листинга отображаются в первой колонке (за исключением первого символа, обозначающего тип файла). Наличие права доступа обозначается соответствующим символом, а отсутствие — символом '-'. Рассмотрим, например, права доступа к файлу a.out:
Тип файла Права владельца- пользователя Права владельца- группы Права остальных пользователей - rwx r-x r-- Обычный файл Чтение, запись, выполнение Чтение и выполнение Только чтениеПрава доступа могут быть изменены только владельцем файла или суперпользователем (superuser) — администратором системы. Для этого используется команда chmod(1). Ниже приведен общий формат этой команды.
В качестве аргументов команда принимает указание классов доступа — владелец-пользователь, 'g' — владелец-группа, 'о' — остальные пользователи, 'а' — все классы пользователей), права доступа ('r' — чтение, 'w' — запись и 'x' — выполнение) и операцию, которую необходимо произвести ('+' — добавить, '-' — удалить и '=' — присвоить) для списка файлов file1, file2 и т.д. Например, команда
$ chmod g-wx ownfile
лишит членов группы-владельца файла ownfile права на запись и выполнение этого файла.
В одной команде можно задавать различные права для нескольких классов доступа, разделив их запятыми.
Приведем еще несколько примеров:
$ chmod a+w text Предоставить право на запись для всех пользователей $ chmod go=r text Установить право на чтение для всех пользователей, за исключением владельца $ chmod g+x-w runme Добавить для группы право на выполнение файла runme и снять право на запись $ chmod u+w,og+r-w text1 text2 Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на запись для всех пользователей, исключая владельцаПоследний пример демонстрирует достаточно сложную установку прав доступа. Вы можете установить сразу все девять прав доступа, используя числовую форму команды chmod(1):
$ chmod 754 *
Число определяется следующим образом: нужно представить права доступа в двоичном виде (0 — отсутствие соответствующего права, 1 — его наличие) и каждую триаду, соответствующую классу доступа, в свою очередь преобразовать в десятичное число.
Владелец Группа Остальные r w x r — x r - - 1 1 1 1 0 1 1 0 0 7 5 4Таким образом, приведенный пример эквивалентен следующей символьной форме chmod(1):