Provided by: manpages-ru_0.98-4_all bug

НАЗВАНИЕ

       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> 2003