Права доступа к файлам и директориям в *NIX

О том как выставляются права на чтение|запись|выполнение в UNIX/Linux/BSD-системах

Каждый процесс в *NIX-системах может быть запущен под каким-нибудь пользователем. Пользователь определяется по идентификатору (user ID — UID), представляющему целое положительное число. Суперпользователь (root) имеет идентификатор 0. Все пользователи распределены по группам, которые также имеют свои идентификаторы (group ID — GID).

Каждый файл в системе имеет своего владельца, как правило пользователя, который его создал. Владелец запоминается по его UID. Так как каждый пользователь принадлежит какой-либо группе, то для каждого файла определен и GID. Таким образом, для каждого файла существует три неравноценных типа пользователей:

* владелец (user),
* участники группы (group),
* остальные (other).

Также для каждого файла определены три типа операций:

* r – чтение (read),
* w – запись (write),
* x – выполение (eXecute).

Таким образом, доступ к каждому типу файлов определяется набором из девяти флагов, по три на каждый тип пользователей:

* rwxrwxrwx — полный доступ к файлу для всех пользователей.
* rwx—— — полный доступ для владельца файла, другие пользователи его не смогут даже прочитать.
* rwxr-xr-x — полный доступ для user, остальные пользователи смогут файл только прочитать или выполнить.

Каждую из троек операций можно представить численно, числом от 1 до 7 (r = 4, w = 2, x = 1), например:

rwx = 4 + 2 + 1 = 7;
r-x = 4 + 1 = 5;

Таким образом, полный набор атрибутов доступа можно представить в виде числа в восьмеричной системе исчисления (rwxrwxrwx = 0777, rwxr-xr-x = 0755).
Доступ к директориям

Доступ к директориям организован по тому же принципу, что и доступ к файлам, только к списку атрибутов приписывается буква d, например drwxrwxrwx. Сами атрибуты имеют особое значение:

* r — позволяет просматривать список имён файлов в каталоге, но не позволяет выяснить их физическое расположение.
* w — позволяет создавать/удалять/редактировать файлы в каталоге.
* x — позволяет узнавать визическое расположение файла в каталоге по его имени.

Замечание

Всё вышеперечисленное не относится к root-у, у которого полный доступ ко всем файлам независимо от UID и GID.

Автор: Александр Бурцев
Источник: http://fastcoder.org/