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