$ 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) :
Читать дальше