vaccess(9)
NAME
- vaccess - generate an access control decision using vnode
- parameters
SYNOPSIS
#include <sys/param.h> #include <sys/vnode.h> int vaccess(enum vtype type, mode_t file_mode, uid_t file_uid, gid_t file_gid, mode_t acc_mode, struct ucred *cred, int *privused);
DESCRIPTION
- This call implements the logic for the UNIX discretionary
- file security model common to many file systems in FreeBSD. It accepts
- the vnodes type type, permissions via file_mode, owning UID file_uid, owning
- GID file_gid, desired access mode acc_mode, requesting creden
- tial cred, and an optional call-by-reference int pointer returning whether
- or not privilege was required for successful evaluation of the call; the
- privused pointer may be set to NULL by the caller in order not to be
- informed of privilege information, or it may point to an integer that
- will be set to 1 if privilege is used, and 0 otherwise.
- This call is intended to support implementations of VOP_AC
- CESS(9), which will use their own access methods to retrieve the vnode
- properties, and then invoke vaccess() in order to perform the actual check.
- Implementations of VOP_ACCESS(9) may choose to implement additional
- security mechanisms whose results will be composed with the return value.
- The algorithm used by vaccess() selects a component of the
- file permission bits based on comparing the passed credential, file
- owner, and file group. If the credential's effective UID matches the file
- owner, then the owner component of the permission bits is selected. If
- the UID does not match, then the credential's effective GID, followed by
- additional groups, are compared with the file group--if there is a
- match, then the group component of the permission bits is selected. If nei
- ther the credential UID or GIDs match the passed file owner and group,
- then the other component of the permission bits is selected.
- Once appropriate protections are selected for the current
- credential, the requested access mode, in combination with the vnode type,
- will be compared with the discretionary rights available for the cre
- dential. If the rights granted by discretionary protections are insuffi
- cient, then superuser privilege, if available for the credential, will also
- be considered.
RETURN VALUES
- vaccess() will return 0 on success, or a non-zero error val
- ue on failure.
ERRORS
- [EACCES] Permission denied. An attempt was made
- to access a
- file in a way forbidden by its file ac
- cess permissions.
- [EPERM] Operation not permitted. An attempt was
- made to per
- form an operation limited to processes
- with appropriate privileges or to the owner of a file
- or other resource.
SEE ALSO
vaccess_acl_posix1e(9), vnode(9), VOP_ACCESS(9)
AUTHORS
- This manual page and the current implementation of vaccess()
- were written by Robert Watson.
- BSD August 22, 2001