Операционная система UNIX - страница 15

стр.

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):

>$ chmod u=rwx, g=rx, o=r *

Значение прав доступа различно для разных типов файлов. Для файлов операции, которые можно производить, следуют из самих названий прав доступа. Например, чтобы просмотреть содержимое файла командой cat(1), пользователь должен иметь право на чтение (r). Редактирование файла, т.е. его изменение, предусматривает наличие права на запись (w). Наконец, для того чтобы запустить некоторую программу на выполнение, вы должны иметь соответствующее право (x). Исполняемый файл может быть как скомпилированной программой, так и скриптом командного интерпретатора shell. В последнем случае вам также понадобится право на чтение, поскольку при выполнении скрипта командный интерпретатор должен иметь возможность считывать команды из файла. Все сказанное, за исключением, пожалуй, права на выполнение, имеющего смысл лишь для обычных файлов и каталогов, справедливо и для других типов файлов: специальных файлов устройств, именованных каналов, и сокетов. Например, чтобы иметь возможность распечатать документ, вы должны иметь право на запись в специальный файл устройства, связанный с принтером.