Права доступа к файлам в ос unix

Восьмеричное значение Вид в столбце прав доступа Право или назначение бита
-r-------- Право владельца на чтение
--w------- Право владельца на запись
---x------ Право владельца на выполнение
----r----- Право группы на чтение
-----w---- Право группы на запись
------x--- Право группы на выполнение
-------r-- Право всех прочих на чтение
--------w- Право всех прочих на запись
---------x Право всех прочих на выполнение
---s------ Установленный эффективный идентификатор владельца (бит SUID)
------s--- Установленный эффективный идентификатор группы (бит SGID)
---------t ---------T Клейкий (sticky) бит. Вид для каталогов и выполняемых файлов, соответственно.

Бит чтения для всех типов файлов имеет одно и то же значение: он позволяет читать содержимое файла (получать листинг каталога командой ls).

Бит записи также имеет одно и то же значение: он позволяет писать в этот файл, включая и перезапись содержимого. Если у пользователя отсутствует право доступа на запись в каталоге, где находится данный файл, то пользователь не сможет этот файл удалить, а также пользователь не сможет создавать и удалять в нем файлы.

Если для некоторого файла установлен бит выполнения, то файл может выполняться как команда. В случае установки этого бита для каталога, этот каталог можно сделать текущим (перейти в него, например, командой cd), но не означает, что возможно выполнение находящихся в нем файлов

Установленный бит SUID означает, что доступный пользователю на выполнение файл будет выполняться с правами (с эффективным идентификатором) владельца, а не пользователя, вызвавшего файл (как это обычно происходит).

Установленный бит SGID означает, что доступный пользователю на выполнение файл будет выполняться с правами (с эффективным идентификатором) группы-владельца, а не пользователя, вызвавшего файл (как это обычно происходит).

Следует еще раз отметить, что с каждым процессом UNIX связаны два идентификатора: пользователя, от имени которого был создан этот процесс, и группы, к которой принадлежит данный пользователь. Эти идентификаторы носят название реальных идентификаторовпользователя: Real User ID, RUID и реальных идентификаторов группы: Real Group ID, RGID. Однако при проверке прав доступа к файлу используются не эти идентификаторы, а так называемые эффективные идентификаторыпользователя: Effective User ID, EUID и эффективные идентификаторы группы: Effective Group ID, EGID.

Введение эффективных идентификаторов позволяет процессу выступать в некоторых случаях от имени пользователя или группы, отличных от тех, которые ему достались при рождении. В исходном состоянии эффективные идентификаторы совпадают с реальными. Чтобы реализовать смену прав кроме перечисленных ранее прав доступа, файл имеет два признака разрешения смены идентификатора – Set User ID on execution (SUID) и Set Group ID on execution (SGID), которые разрешают смену идентификаторов пользователя и группы при выполнении данного файла. Их существование обусловлено тем, что некоторые программы требуют для своей работы привилегий пользователя root. Например команда passwd(находится/usr/bin/passwd), с помощью которой пользователь меняет свой пароль, обращается к файлу,принадлежащему суперпользователю /etc/passwd, поэтому у нее установлен бит SUID. Она модифицирует файл строго определенным пользователем образом и завершается.

Если бит SGID установлен для каталога, то создаваемые в нем файлы будут принимать идентификатор группы каталога, а не группы, в которую входит владелец файла. Это упрощает пользователям, принадлежащих к одной группе, совместный доступ к каталогу.

Применение прав доступа SUID и SGID чревато опасными последствиями – при некорректном завершении программы, запущенной обычным пользователем и получившей права пользователя root, возможна ситуация, когда права root останутся у этого пользователя. Если нужны привилегированные права, то лучше пользоваться программой sudo (su) – смены текущего пользователя.

Для расчета прав доступа необходимо сложить восьмеричные значения всех необходимых установленных битов. В результате получится четырехзначное восьмеричное число. Если старший разряд имеет значение 0, его можно не указывать.

Например, если необходимо задать права доступа на чтение, запись и выполнение для владельца, на чтение и выполнение для группы и на выполнение для всех остальных пользователей, получаем следующее восьмеричное значение:

Чтение для владельца:
Запись для владельца:
Выполнение для владельца:
Чтение для группы:
Выполнение для группы:
Выполнение для прочих:
Сумма:

Итак, соответствующие права доступа ­– 751. В длинном листинге эти права будут представлены в виде "-rwxr-x--x" (при "сложении" буквы с дефисом в символьном представлении остается буква). Полное право доступа всех задается числом 777 (111 111 111). Наиболее часто используется маска 644 (110 100 100), разрешающая чтение и модификацию файла для владельца, и только чтение для других пользователей.

Для установки (изменения) прав доступа к файлу используется команда chmod. Права доступа к файлу может изменять или устанавливать только его владелец или пользователь root. Права доступа могут задаваться как абсолютным значением (восьмеричным числом, расчет которого выполняется в соответствии с табл. 4), так и относительным изменением прав при помощи специальных символов.

Наши рекомендации