chmod

chmod(2)                        2007-10-27-16:31                        chmod(2)



 НАЗВА
       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 .
       Права визначаються за допомогою логічних операцій і/або виходячи з
       наступного:



   S_ISUID
       04000 встановити ID користувача при виконанні


   S_ISGID
       02000 встановити ID групи при виконанні


   S_ISVTX
       01000 sticky bit


   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 процесу не нуль і зазначена для файлу група не
       відповідає ефективному ID-групи процесу, або якимсь допоміжним ID-груп ,
       то біт S_ISGID буде переставлено в положення виключено , тому процес буде
       завершений і повернута помилка.  В  залежності від файлової системи, при
       записі файлу, біт виконання   в установках для ID-користувача та ID-групи
       може бути переключений в положення  виключено.  В деяких файлових
       системах лише  привілейований користувач може встановити sticky bit, який
       має спеціальне значення. Про sticky-біт, про біти установок
       ID-користувача та ID-групи, для   директорій, див. stat (2).  В NFS
       файлових системах, обмеження прав доступу, зразу ж, вплине на вже
       відкриті файли, тому що контроль доступу проводиться на сервері, а
       відкриті файли обслуговуються клієнтом. Розширення прав доступу може
       затримувати інших клієнтів, які дозволяють кешування атрибутів.


 ПОВЕРНЕНЕ ЗНАЧЕННЯ
       При вдалому завершенні повертає нуль.  При помилковому повертає -1 , та
       відповідно виставляє errno .


 ПОМИЛКИ
       В  залежності від файлової системи, можуть бути повернені різні помилки.
       Більшість загальних помилок для chmod є подано нижче:


   EPERM
       Ефективний UID не відповідає власникові файлу, і не нуль.


   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 і EMULTIHOP, але не має
       ENOMEM.  POSIX.1 не документовано коди помилок EFAULT, ENOMEM і ELOOP, а
       також макроси 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), execve(2), stat(2)




© 2005-2007 DLOU, GNU FDL       2007-10-27-16:31                        chmod(2)