Rechercher une page de manuel
chmod
Langue: ru
Version: 1997-12-10 (fedora - 25/11/07)
Section: 2 (Appels système)
НАЗВАНИЕ
chmod, fchmod - изменить права доступа к файлуОБЗОР
#include <sys/types.h>#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);
ОПИСАНИЕ
Изменяет права доступа к файлу, заданному параметром path или файловым дескриптором fildes.Права задаются применением логической операции OR (битовое сложение -- прим. пер.) к следующим константам:
-
- S_ISUID
- 04000 установить при выполнении идентификатор пользователя (suid бит -- прим.пер.)
- S_ISGID
- 02000 установить при выполнении идентификатор группы (sgid бит -- прим.пер.)
- S_ISVTX
- 01000 sticky бит
- 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 будет сброшен, но ошибки при этом не возникнет.
В зависимости от файловой системы, suid и sgid биты могут быть сброшены, когда происходит запись в файл. На некоторых файловых системах только суперпользователь может устанавливать sticky бит, который может иметь специальное значение. О значении sticky бита, а также suid и sgid битов на каталоги, см. stat(2). На файловых системах NFS отмена некоторых прав доступа немедленно повлияет на открытые файлы, потому что контроль доступа осуществляется сервером, а открытые файлы обрабатываются клиентом. Добавление новых прав доступа может произойти не сразу, если на клиенте включено кэширование атрибутов.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. При ошибке возвращается -1, а errno устанавливается должным образом.ОШИБКИ
В зависимости от файловой системы могут также появиться другие ошибки. Общий набор ошибок для chmod таков:
- EPERM
- Фактический UID не совпадает с владельцем файла и не равен нулю.
- EROFS
- Файл находится на файловой системе, смонтированной только для чтения.
- EFAULT
- path указывает за пределы доступного адресного пространства.
- ENAMETOOLONG
- path слишком длинно.
- ENOENT
- Файл не существует.
- ENOMEM
- Ядру не хватило памяти.
- ENOTDIR
- Компонент пути, использованный как каталог в path, в действительности таковым не является.
- EACCES
- Запрещен поиск в одном из каталогов, находящихся на пути к файлу.
- ELOOP
- При обработке path встречено слишком много символических ссылок.
- EIO
- Произошла ошибка ввода-вывода.
Общий набор ошибок для fchmod таков:
- EBADF
- Неверный файловый дескриптор fildes.
- EROFS
- См. выше.
- EPERM
- См. выше.
- EIO
- См. выше.
СООТВЕТСТВИЕ СТАНДАРТАМ
Системный вызов chmod соответствует стандартам SVr4, SVID, POSIX, X/OPEN, 4.4BSD. SVr4 документирует EINTR, ENOLINK и EMULTIHOP, но не документирует 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 не документируют sticky бит.
СМОТРИ ТАКЖЕ
open(2), chown(2), stat(2)ПЕРЕВОД
Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999, Виктор Вислобоков <corochoone@perm.ru> 2003Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre