EUIDACCESS(3) | Руководство программиста Linux | EUIDACCESS(3) |
euidaccess, 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.
access(2), chmod(2), chown(2), faccessat(2), open(2), setgid(2), setuid(2), stat(2), credentials(7), path_resolution(7)
2017-09-15 |