Unix/Linux Go Back    


Linux 2.6 - man page for access (linux section 3posix)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


ACCESS(P)			    POSIX Programmer's Manual				ACCESS(P)

NAME
       access - determine accessibility of a file

SYNOPSIS
       #include <unistd.h>

       int access(const char *path, int amode);

DESCRIPTION
       The  access()  function	shall check the file named by the pathname pointed to by the path
       argument for accessibility according to the bit pattern contained in amode, using the real
       user  ID in place of the effective user ID and the real group ID in place of the effective
       group ID.

       The value of amode is either the bitwise-inclusive OR of  the  access  permissions  to  be
       checked (R_OK, W_OK, X_OK) or the existence test (F_OK).

       If any access permissions are checked, each shall be checked individually, as described in
       the Base Definitions volume  of	IEEE Std 1003.1-2001,  Chapter	3,  Definitions.  If  the
       process	has  appropriate privileges, an implementation may indicate success for X_OK even
       if none of the execute file permission bits are set.

RETURN VALUE
       If the requested access is permitted, access() succeeds and shall return 0; otherwise,  -1
       shall be returned and errno shall be set to indicate the error.

ERRORS
       The access() function shall fail if:

       EACCES Permission bits of the file mode do not permit the requested access, or search per-
	      mission is denied on a component of the path prefix.

       ELOOP  A loop exists in symbolic links encountered during resolution of the path argument.

       ENAMETOOLONG
	      The length of the path argument exceeds  {PATH_MAX}  or  a  pathname  component  is
	      longer than {NAME_MAX}.

       ENOENT A component of path does not name an existing file or path is an empty string.

       ENOTDIR
	      A component of the path prefix is not a directory.

       EROFS  Write access is requested for a file on a read-only file system.

       The access() function may fail if:

       EINVAL The value of the amode argument is invalid.

       ELOOP  More  than  {SYMLOOP_MAX}  symbolic links were encountered during resolution of the
	      path argument.

       ENAMETOOLONG
	      As a result of encountering a symbolic link in resolution of the path argument, the
	      length of the substituted pathname string exceeded {PATH_MAX}.

       ETXTBSY
	      Write  access  is  requested  for a pure procedure (shared text) file that is being
	      executed.

       The following sections are informative.

EXAMPLES
   Testing for the Existence of a File
       The following example tests whether a file named myfile exists in the /tmp directory.

	      #include <unistd.h>
	      ...
	      int result;
	      const char *filename = "/tmp/myfile";

	      result = access (filename, F_OK);

APPLICATION USAGE
       Additional values of amode other than the set defined in the description may be valid; for
       example, if a system has extended access controls.

RATIONALE
       In  early  proposals, some inadequacies in the access() function led to the creation of an
       eaccess() function because:

	1. Historical implementations of access() do not test  file  access  correctly	when  the
	   process'  real user ID is superuser. In particular, they always return zero when test-
	   ing execute permissions without regard to whether the file is executable.

	2. The superuser has complete access to all files on a system. As a consequence, programs
	   started  by the superuser and switched to the effective user ID with lesser privileges
	   cannot use access() to test their file access permissions.

       However, the historical model of eaccess() does not resolve problem (1), so this volume of
       IEEE Std 1003.1-2001  now  allows  access()  to	behave in the desired way because several
       implementations have corrected the problem. It was also argued that problem  (2)  is  more
       easily  solved  by  using open(), chdir(), or one of the exec functions as appropriate and
       responding to the error, rather than creating a new function that would not  be	as  reli-
       able. Therefore, eaccess() is not included in this volume of IEEE Std 1003.1-2001.

       The  sentence  concerning  appropriate privileges and execute permission bits reflects the
       two possibilities implemented by historical implementations when checking superuser access
       for X_OK.

       New implementations are discouraged from returning X_OK unless at least one execution per-
       mission bit is set.

FUTURE DIRECTIONS
       None.

SEE ALSO
       chmod() , stat() , the Base Definitions volume of IEEE Std 1003.1-2001, <unistd.h>

COPYRIGHT
       Portions of this text are reprinted and	reproduced  in	electronic  form  from	IEEE  Std
       1003.1,	2003  Edition,	Standard  for Information Technology -- Portable Operating System
       Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003  by
       the  Institute  of  Electrical  and  Electronics Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE  and  The  Open  Group
       Standard, the original IEEE and The Open Group Standard is the referee document. The orig-
       inal Standard can be obtained online at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group			       2003					ACCESS(P)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 02:47 PM.