Права доступа к файлам в ос 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), так и относительным изменением прав при помощи специальных символов.