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
Почитать:
Калькуляторы