Unix права доступа
Введение
В Unix каждому файлу соответствует набор прав доступа, представленный в виде 9-ти битов. Он определяет, какие пользователи имеют право читать файл, записывать в него данные или выполнять его. Права могут изменяться владельцем файла или суперпользователем с помощью команды chmod
.
Для каждого файла определяется доступ:
- владельца (owner);
- группового владельца (group owner);
- остальных пользователей (everyone).
Реализация управления доступом осуществляется тремя флагам:
- чтение - read (r);
- запись - write (w);
- выполнение - eXecute (x).
Также у файла присутствует дополнительный флаг, определяющий тип файла, так как в Unix системах всё является файлом, включая папки и устройства.
flag | user | group | other |
---|---|---|---|
# | rwx | rwx | rwx |
Таблица типа флага.
Флаг | Описание |
---|---|
- | Отсутствие флага |
l | Символическая ссылка (symbolic link) |
d | Директория (directory) |
b | Блочное устройство (block device) |
c | Символьное устройство (character device) |
p | Канал, устройство fifo (fifo device) |
s | Unix сокет (unix domain socket) |
Права доступа
Сочетание трех флагов определяет право доступа, например r-x, rw- или rwx. Для удобства записи флаги представляются числами с отличающимся разрядом, что позволяет по их сумме определить право доступа.
- read = 4
- write = 2
- eXecute = 1
Для файлов и каталогов, флаги r
, w
, x
имеют отличный смысл.
Сумма | Флаги | Маска | Права на файл | Права на каталог |
---|---|---|---|---|
0 | 000 | - - - | отсутствие прав | отсутствие прав |
1 | 001 | - - x | права на выполнение | доступ к файлам и их атрибутам |
2 | 010 | - w - | права на запись | отсутствие прав |
3 | 011 | - w x | права на запись и выполнение | все, кроме доступа к именам файлов |
4 | 100 | r - - | права на чтение | только чтение имен файлов |
5 | 101 | r - x | права на чтение и выполнение | чтение имен файлов и доступ файлам и их атрибутам |
6 | 110 | r w - | права на чтение и запись | только чтение имен файлов |
7 | 111 | r w x | полные права | все права |
Для полноценного просмотра каталога, необходимы права на чтение каталога и доступ к файлам, а главное к их атрибутам, т.е. минимальные разумные права на каталог = 5 (r-x). Прав 4 (r–) хватит только на просмотр имен файлов, без атрибутов, т.е. не будут известны размер файла, права доступа, владелец. На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (—).
drwxr-xr-x 13 allexserv nogroup 4096 2009-05-31 14:58 phpBB3
Права доступа по-умолчанию (umask)
У каждого пользователя есть umask
- инвертированная битовая маска накладываемая на набор прав по умолчанию. Значение umask
хранится в профиле пользователя. Узнать значение можно командой umask
.
$ umask
0002
Итак, инвертированная маска = 7775, режим полного доступа для директорий — 777, для файлов — 666. Таким образом при создании файла результирующий набор бит прав доступа:
- Для файлов 666 & !umask (7775) = 664
- Для директорий 777 & !umask (7775) = 775
Почитать:
Калькуляторы