Документация по LinuxLinuxDoc.Ru 🔍

chmod, fchmod - функции, изменяющие права доступа к файлу

НАЗВАНИЕ
chmod, fchmod - функции, изменяющие права доступа к файлу

СИНТАКСИС

#include
#include

int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);

ОПИСАНИЕ
Функции изменяют режим доступа к файлу, заданному
параметром path или описателем файла fildes. С помощью
операции или можно сразу задавать следующие режимы:


S_ISUID 04000 установить пользователю права на
выполнение

S_ISGID 02000 установить группе права на
выполнение

S_ISVTX 01000 бит принадлежности

S_IRUSR (S_IREAD)
00400 чтение для владельца

S_IWUSR (S_IWRITE)
00200 запись для владельца

S_IXUSR (S_IEXEC)
00100 выполнение/поиск для владельца

S_IRGRP 00040 чтение для группы

S_IWGRP 00020 запись для группы

S_IXGRP 00010 выполнение/поиск для группы

S_IROTH 00004 чтение для остальных пользователей

S_IWOTH 00002 запись для остальных пользователей

S_IXOTH 00001 выполнение/поиск для остальных
пользователей

Идентификатор эффективного пользователя (UID) процесса
должен быть нулем или должен совпадать с UID файла. Если
эффективный UID процесса не равен нулю, а группа-владелец
файла не совпадает с фактическим GID процесса или одним из
его дополнительных GID, то бит S_ISGID будет сброшен, но
ошибки при этом не возникнет. В зависимости от файловой
системы биты, установленные для выполнения операции
пользователем и группой, могут быть сброшены, когда
происходит запись информации в файл. В некоторых файловых
системах только суперпользователь имеет возможность
устанавливать бит принадлежности, который иногда имеет
специальное значение. Для справки о бите принадлежности и
об установки идентификаторов пользователя и группы на
каталоги смотрите stat(2). В файловых системах NFS отмена
некоторых прав доступа немедленно повлияет на открытые
файлы, потому что контроль доступа осуществляется
сервером, а открытые файлы обрабатываются клиентом.
Добавление новых прав доступа может произойти не сразу,
если на клиенте запущено кэширование атрибутов.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
После успешного выполнения операции возвращаемое значение
равно нулю. При ошибке оно равно -1, а переменной errno
присваивается соответствующий код ошибки.

КОДЫ ОШИБОК
Наиболее общие коды ошибок chmod:

EPERM (эффективный UID не совпадает с ID владельца файла
и не равен нулю);

EROFS (файл находится в файловой системе, предназначенной
только для чтения);

EFAULT ( path указывает на каталог, находящийся за
пределами доступного адресного пространства);

ENAMETOOLONG
(полное имя path слишком длинное);

ENOENT (файла не существует);

ENOMEM (недостаточно памяти в системе);

ENOTDIR
(часть path не является каталогом);

EACCES (запрещен поиск в одном из каталогов, который
является компонентом path);

ELOOP ( path является зацикленной символьной ссылкой, то
есть при соответствующей подстановке возникает
ссылка на неё саму);

EIO ( ошибка ввода-вывода).

Основные коды ошибок fchmod:

EBADF ( fildes - неверный файловый описатель);

EROFS (см. выше);

EPERM (см. выше);

EIO (см. выше).

В зависимости от файловой системы в работе могут
появляться и другие ошибки.

СООТВЕТСТВИЕ СТАНДАРТАМ
Вызов chmod соответствует стандартам SVr4, SVID, POSIX,
X/OPEN, 4.4BSD. SVr4 описывает EINTR, ENOLINK и EMULTI-
HOP, но не описывает ENOMEM. POSIX.1 не описывает ни коды
ошибок EFAULT, ENOMEM, ELOOP и EIO, ни макросы S_IREAD,
S_IWRITE и S_IEXEC. Вызов fchmod соответствует 4.4BSD и
SVr4. SVr4 описывает дополнительные коды ошибок EINTR и
ENOLINK. POSIX требует присутствия функции fchmod, если
определены символы _POSIX_MAPPED_FILES или
_POSIX_SHARED_MEMORY_OBJECTS, и описывает дополнительные
коды ошибок ENOSYS и EINVAL, но не документирует EIO.

POSIX и X/OPEN не описывают бит принадлежности.
Читать новости Linux в Telegram
Linux - chmod, fchmod - функции, изменяющие права доступа к файлу
Мы в соцсетях ✉