[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


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

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

Права доступа к новому файлу вычисляются путем побитового умножения величины, обратной umask, на значение режима доступа, указанное процессом при создании файла. Во время создания файла процессом операционная система выполняет следующие действия:

Например, режим доступа 027 указывает, что у владельца нет никаких прав доступа к файлу. Группе предоставлены права на запись. Всем остальным пользователям предоставлены права на чтение, запись и выполнение. Значение umask для набора прав доступа 027 равно 750 (обратно исходным правам доступа). После побитового умножения 750 на 666 (режим доступа к файлу, указанный в системном вызове при создании файла) получаются фактические права доступа к файлу - 640. Ниже эти права доступа записаны в другом формате:

027 = _ _ _  _ W _  R W X        Права доступа к существующему файлу
750 = R W X  R _ X  _ _ _        Обратное значение umask
                                 права доступа
666 = R W _  R W _  R W _        Права доступа, заданные при создании файла
AND
750 = R W X  R _ X  _ _ _        Значение umask
640 = R W _  R _ _  _ _ _        Итоговые права доступа к файлу


umask Получает и устанавливает маску создания файла
chmod и fchmod Изменяют права доступа к файлу.
access Анализирует и выдает права доступа к файлу с указанным именем и путем. Эта функция использует не действующие, а фактические ИД пользователя и группы. Это позволяет программам, изменившим свой ИД пользователя и группы, предоставлять доступ лишь отдельным пользователям.

Рассмотрим следующий пример:

$ ls -l
total 0
-r-s--x--x      1 root  system   8290 09 июня 17:07 special
-rw-------      1 root  system   1833 09 июня 17:07 secrets
$ cat secrets
cat: невозможно открыть secrets

В данном примере у владельца нет прав доступа к файлу secrets. Однако программа special, запущенная от имени root, сможет обратиться к файлу. Для того чтобы сохранить защиту файла, в программе должна применяться функция access.

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

chown Изменяет ИД владельца файла, указанный в i-узле. Старый ИД владельца удаляется, а на его место записывается новый.

Функция chmod изменяет режим доступа к файлу.

При изменении владельца файла и режима доступа обновляется только i-узел, а не данные в файле. Эти действия может выполнять только процесс администратора или владельца файла.

Связанная информация

Глава 5, Файловые системы и каталоги

Функции access, accessx, faccessx, chown, fchown, chownx, fchownx, chmod и fchmod


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]