euidaccess(3) проверяет эффективные права пользователя на файл

Other Alias

eaccess

ОБЗОР

#define _GNU_SOURCE /* Смотрите feature_test_macros(7) */
#include <unistd.h>


int euidaccess(const char *pathname, int mode);
int eaccess(const char *pathname, int mode);

ОПИСАНИЕ

Подобно access(2), euidaccess() проверяет права и существование файла, указанного в аргументе pathname. Однако, если access(2) выполняет проверку для реального идентификатора пользователя и группы процесса, то euidaccess() использует эффективные идентификаторы.

Значение mode представляет собой маску, состоящую из одного и более флагов R_OK, W_OK, X_OK и F_OK (значение описано в access(2)).

Функция eaccess() — ещё одно название euidaccess(), предоставляется для совместимости с некоторыми другими системами.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении (есть все запрошенные права) возвращается ноль. При ошибке (по крайней мере, один флаг из mode был не удовлетворён, или произошла другая ошибка), возвращается -1, а errno устанавливается должным образом.

ОШИБКИ

Аналогичны access(2).

ВЕРСИИ

Функция eaccess() впервые появилась в glibc 2.4.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
ИнтерфейсАтрибутЗначение
euidaccess(), eaccess() безвредность в нитяхбезвредно (MT-Safe)

СООТВЕТСТВИЕ СТАНДАРТАМ

Эти функции являются нестандартными. В некоторых системах есть функция eaccess().

ЗАМЕЧАНИЯ

Предупреждение: Использование этой функции для проверки прав процесса на файл перед выполнением какой-то операции на основе этой информации приводит к состоянию состязательности: права на файл могут измениться между двумя этими шагами. Обычно, безопасней просто попытаться выполнить желаемую операцию и что-то предпринять при возникновении ошибки с правами.

Эта функция всегда разыменовывает символьные ссылки. Если вам нужно проверить права символьной ссылки, используйте вызов faccessat(2) с флагами AT_EACCESS и AT_SYMLINK_NOFOLLOW.