НАЗВА

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)