sys_access  [fs/open.c]


Determines accessibility of a file.

Arguments

eax 33
ebx Pointer to a null-terminated string that specifies the pathname of the file.
ecx Mode to test for. Supported values:
F_OK - Test for existence.
X_OK - Test for execute permission.
W_OK - Test for write permission.
R_OK - Test for read permission.

Return values

If the system call succeeds the return value is 0.
If the system call fails the return value is one of the following errno values:

-EIO An I/O error occurred while reading from or writing to the file system.
-EACCES Search permission is denied for one of the directories in the path prefix of the path.
-ENOTDIR A component used as a directory in pathname is not, in fact, a directory
-EIO An I/O error occurred while reading from or writing to the file system.
-ELOOP Too many symbolic links were encountered in path resolving.
-ENAMETOOLONG Path is too long.
-ENOMEM Insufficient kernel memory was available.
-ENOENT The file does not exist.
-EINVAL Mode was incorrectly specified.
-EFAULT ebx points outside your accessible address space.

Remarks

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-user-ID programs to easily determine the invoking user's authority.

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.

Compatibility

n/a