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