Утилита fchmodat#

Утилита fchmodat является псевдонимом chmod (см. Утилита chmod), используется для изменения прав доступа к файлам, определяемым файловыми уникальными идентификаторами - дескрипторами - относительно каталога, на который ссылается данный дескриптор.

Синтаксис fchmodat:

#define _ATFILE_SOURCE
#include <fcntl.h>           /* Definition of AT_* constants */
#include <sys/stat.h>

int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);

Где:

  • #define... - определение директивы, необходимой для доступа к некоторым функциям и константам;

  • #include <fcntl.h>... и #include <sys/stat.h> - включение заголовочных файлов, содержащих определения используемых функций и констант;

  • int - целочисленный тип данных;

  • dirfd - файловый дескриптор каталога;

  • const char *pathname - путь и имя файла/каталога;

  • mode_t mode - режим прав доступа;

  • flags - флаги.

Если путь, указанный в pathname, является относительным, то он интерпретируется относительно каталога, на который ссылается файловый дескриптор dirfd (а не относительно текущего рабочего каталога, как в chmod).

Если pathname является относительным, а dirfd - это специальное значение AT_FDCWD (константа текущего рабочего каталога), то pathname интерпретируется относительно текущего рабочего каталога вызывающего процесса.

Если pathname является абсолютным, то dirfd игнорируется.

Флаги могут быть либо равны 0, либо быть AT_SYMLINK_NOFOLLOW - если pathname является символьной ссылкой, то используется сама ссылка без перехода по ней. Факт реализации данного флага необходимо проверять в справочнике man.