Книга: Linux программирование в примерах
5.5.2. Изменение прав доступа: chmod() и fchmod()
5.5.2. Изменение прав доступа: chmod()
и fchmod()
Изменение прав доступа осуществляется с помощью одного из двух системных вызовов, chmod()
и fchmod()
:
#include <sys/types.h> /* POSIX */
работает с аргументом имени файла, a
#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);
chmod()fchmod()
работает с открытым файлом. (В POSIX нет вызова lchmod()
, поскольку система игнорирует установки прав доступа для символических ссылок. Хотя на некоторых системах такой вызов действительно есть). Как и для большинства других системных вызовов, они возвращают 0 в случае успеха и -1 при ошибке. Права доступа к файлу может изменить лишь владелец файла или root
.
Значение mode создается таким же образом, как для open()
и creat()
, как обсуждалось в разделе 4.6 «Создание файлов». См. также табл. 5.2, в которой перечислены константы прав доступа.
Система не допустит установки бита setgid (S_ISGID
), если группа файла не совпадает с ID действующей группы процесса или с одной из его дополнительных групп. (Мы пока не обсуждали подробно эти проблемы; см. раздел 11.1.1 «Реальные и действующие ID».) Разумеется, эта проверка не относится к root
или коду, выполняющемуся как root
.
- 5.5. Смена владельца, прав доступа и времени изменения
- 5.5.4. Использование fchown() и fchmod() для обеспечения безопасности
- chmod
- Правила творческой лени
- Права для выполнения резервного копирования
- Правильная стратегическая последовательность
- Ничего, кроме правды: поведение потребителей
- Заполнение справочников и каталогов
- Неисправности источника бесперебойного питания
- Неисправности акустических систем
- Основные "рычаги" управления производительностью
- Права