trusty (2) faccessat.2.gz

Provided by: manpages-dev_3.54-1ubuntu1_all bug

NAME

       faccessat - check user's permissions of a file relative to a directory file descriptor

SYNOPSIS

       #include <fcntl.h> /* Definition of AT_* constants */
       #include <unistd.h>

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

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       faccessat():
           Since glibc 2.10:
               _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
           Before glibc 2.10:
               _ATFILE_SOURCE

DESCRIPTION

       The  faccessat()  system  call  operates in exactly the same way as access(2), except for the differences
       described in this manual page.

       If the pathname given in pathname is relative, then it is interpreted relative to the directory  referred
       to  by  the  file  descriptor dirfd (rather than relative to the current working directory of the calling
       process, as is done by access(2) for a relative pathname).

       If pathname is relative and dirfd is the special value AT_FDCWD, then pathname is interpreted relative to
       the current working directory of the calling process (like access(2)).

       If pathname is absolute, then dirfd is ignored.

       flags is constructed by ORing together zero or more of the following values:

       AT_EACCESS
              Perform  access  checks  using the effective user and group IDs.  By default, faccessat() uses the
              real IDs (like access(2)).

       AT_SYMLINK_NOFOLLOW
              If pathname is a symbolic link, do not dereference it: instead return information about  the  link
              itself.

RETURN VALUE

       On  success,  (all  requested  permissions  granted) faccessat() returns 0.  On error, -1 is returned and
       errno is set to indicate the error.

ERRORS

       The same errors that occur for access(2) can also occur for faccessat().  The following additional errors
       can occur for faccessat():

       EBADF  dirfd is not a valid file descriptor.

       EINVAL Invalid flag specified in flags.

       ENOTDIR
              pathname is relative and dirfd is a file descriptor referring to a file other than a directory.

VERSIONS

       faccessat() was added to Linux in kernel 2.6.16; library support was added to glibc in version 2.4.

CONFORMING TO

       POSIX.1-2008.

NOTES

       See openat(2) for an explanation of the need for faccessat().

       Warning: faccessat() is subject to the same kinds of races as access(2) and euidaccess(3).

   Glibc notes
       The  AT_EACCESS  and AT_SYMLINK_NOFOLLOW flags are actually implemented within the glibc wrapper function
       for faccessat().  If either of these flags are specified, then the wrapper function employs fstatat(2) to
       determine access permissions.

SEE ALSO

       access(2), openat(2), euidaccess(3), credentials(7), path_resolution(7), symlink(7)

COLOPHON

       This  page  is  part  of  release 3.54 of the Linux man-pages project.  A description of the project, and
       information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.