Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ACCESS(2)		   Linux Programmer's Manual		     ACCESS(2)

NAME
       access -	check user's permissions for a file

SYNOPSIS
       #include	<unistd.h>

       int access(const	char *pathname,	int mode);

DESCRIPTION
       access  checks  whether	the process would be allowed to	read, write or
       test for	existence of the file (or other	file system object) whose name
       is  pathname.   If  pathname is a symbolic link permissions of the file
       referred	to by this symbolic link are tested.

       mode is a mask consisting of one	or more	of R_OK, W_OK, X_OK and	F_OK.

       R_OK, W_OK and X_OK request checking whether the	file  exists  and  has
       read,  write and	execute	permissions, respectively.  F_OK just requests
       checking	for the	existence of the file.

       The tests depend	on the permissions of the directories occurring	in the
       path  to	 the file, as given in pathname, and on	the permissions	of di-
       rectories and files referred to by symbolic links  encountered  on  the
       way.

       The check is done with the process's real uid and gid, rather than with
       the effective ids as is done when  actually  attempting	an  operation.
       This  is	 to  allow  set-UID  programs to easily	determine the invoking
       user's authority.

       Only access bits	are checked, not the file type	or  contents.	There-
       fore,  if a directory is	found to be "writable,"	it probably means that
       files can be created in the directory, and not that the	directory  can
       be  written  as a file.	Similarly, a DOS file may be found to be "exe-
       cutable," but the execve(2) call	will still fail.

       If the process has appropriate privileges, an implementation may	 indi-
       cate  success for X_OK even if none of the execute file permission bits
       are set.

RETURN VALUE
       On success (all requested permissions granted), zero is	returned.   On
       error  (at least	one bit	in mode	asked for a permission that is denied,
       or some other error occurred), -1 is returned, and errno	is set	appro-
       priately.

ERRORS
       access shall fail if:

       EACCES The  requested access would be denied to the file	or search per-
	      mission is denied	to one of the directories in pathname.

       ELOOP  Too many symbolic	links were encountered in resolving pathname.

       ENAMETOOLONG
	      pathname is too long.

       ENOENT A	directory component in pathname	would have been	accessible but
	      does not exist or	was a dangling symbolic	link.

       ENOTDIR
	      A	 component  used as a directory	in pathname is not, in fact, a
	      directory.

       EROFS  Write permission	was  requested	for  a	file  on  a  read-only
	      filesystem.

       access may fail if:

       EFAULT pathname points outside your accessible address space.

       EINVAL mode was incorrectly specified.

       EIO    An I/O error occurred.

       ENOMEM Insufficient kernel memory was available.

       ETXTBSY
	      Write  access was	requested to an	executable which is being exe-
	      cuted.

RESTRICTIONS
       access returns an error if any of the access  types  in	the  requested
       call fails, even	if other types might be	successful.

       access  may not work correctly on NFS file systems with UID mapping en-
       abled, because UID mapping is done on the server	and  hidden  from  the
       client, which checks permissions.

       Using  access  to check if a user is authorized to e.g. open a file be-
       fore actually doing so using open(2) creates a security	hole,  because
       the  user  might	 exploit  the short time interval between checking and
       opening the file	to manipulate it.

CONFORMING TO
       SVID, AT&T, POSIX, X/OPEN, BSD 4.3

SEE ALSO
       stat(2),	open(2), chmod(2), chown(2), setuid(2),	setgid(2)

Linux				  2002-04-23			     ACCESS(2)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | RESTRICTIONS | CONFORMING TO | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=access&sektion=2&manpath=Red+Hat+9>

home | help