JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
man pages section 2: System Calls
search filter icon
search icon

Document Information

Preface

Introduction

System Calls

access(2)

acct(2)

acl(2)

adjtime(2)

alarm(2)

audit(2)

auditon(2)

auditsvc(2)

brk(2)

chdir(2)

chmod(2)

chown(2)

chroot(2)

close(2)

creat(2)

dup(2)

exec(2)

execl(2)

execle(2)

execlp(2)

execv(2)

execve(2)

execvp(2)

_Exit(2)

_exit(2)

exit(2)

facl(2)

fchdir(2)

fchmod(2)

fchown(2)

fchownat(2)

fchroot(2)

fcntl(2)

fgetlabel(2)

fork1(2)

fork(2)

forkall(2)

fpathconf(2)

fstat(2)

fstatat(2)

fstatvfs(2)

futimens(2)

futimesat(2)

getacct(2)

getaudit(2)

getaudit_addr(2)

getauid(2)

getcontext(2)

getdents(2)

getegid(2)

geteuid(2)

getgid(2)

getgroups(2)

getisax(2)

getitimer(2)

getlabel(2)

getmsg(2)

getpflags(2)

getpgid(2)

getpgrp(2)

getpid(2)

getpmsg(2)

getppid(2)

getppriv(2)

getprojid(2)

getrctl(2)

getrlimit(2)

getsid(2)

gettaskid(2)

getuid(2)

getustack(2)

ioctl(2)

issetugid(2)

kill(2)

lchown(2)

link(2)

llseek(2)

lseek(2)

lstat(2)

_lwp_cond_broadcast(2)

_lwp_cond_reltimedwait(2)

_lwp_cond_signal(2)

_lwp_cond_timedwait(2)

_lwp_cond_wait(2)

_lwp_continue(2)

_lwp_info(2)

_lwp_kill(2)

_lwp_mutex_lock(2)

_lwp_mutex_trylock(2)

_lwp_mutex_unlock(2)

_lwp_self(2)

_lwp_sema_init(2)

_lwp_sema_post(2)

_lwp_sema_trywait(2)

_lwp_sema_wait(2)

_lwp_suspend(2)

memcntl(2)

meminfo(2)

mincore(2)

mkdir(2)

mknod(2)

mmap(2)

mount(2)

mprotect(2)

msgctl(2)

msgget(2)

msgids(2)

msgrcv(2)

msgsnap(2)

msgsnd(2)

munmap(2)

nice(2)

ntp_adjtime(2)

ntp_gettime(2)

open(2)

openat(2)

pathconf(2)

pause(2)

pcsample(2)

pipe(2)

poll(2)

p_online(2)

pread(2)

priocntl(2)

priocntlset(2)

processor_bind(2)

processor_info(2)

profil(2)

pset_assign(2)

pset_bind(2)

pset_create(2)

pset_destroy(2)

pset_getattr(2)

pset_info(2)

pset_list(2)

pset_setattr(2)

putacct(2)

putmsg(2)

putpmsg(2)

pwrite(2)

read(2)

readlink(2)

readv(2)

rename(2)

renameat(2)

resolvepath(2)

rmdir(2)

sbrk(2)

semctl(2)

semget(2)

semids(2)

semop(2)

semtimedop(2)

setaudit(2)

setaudit_addr(2)

setauid(2)

setcontext(2)

setegid(2)

seteuid(2)

setgid(2)

setgroups(2)

setitimer(2)

setpflags(2)

setpgid(2)

setpgrp(2)

setppriv(2)

setrctl(2)

setregid(2)

setreuid(2)

setrlimit(2)

setsid(2)

settaskid(2)

setuid(2)

setustack(2)

shmat(2)

shmctl(2)

shmdt(2)

shmget(2)

shmids(2)

shmop(2)

sigaction(2)

sigaltstack(2)

sigpending(2)

sigprocmask(2)

sigsend(2)

sigsendset(2)

sigsuspend(2)

sigwait(2)

__sparc_utrap_install(2)

stat(2)

statvfs(2)

stime(2)

swapctl(2)

symlink(2)

sync(2)

sysfs(2)

sysinfo(2)

time(2)

times(2)

uadmin(2)

ulimit(2)

umask(2)

umount(2)

umount2(2)

uname(2)

unlink(2)

unlinkat(2)

ustat(2)

utime(2)

utimensat(2)

utimes(2)

uucopy(2)

vfork(2)

vhangup(2)

waitid(2)

wracct(2)

write(2)

writev(2)

yield(2)

acl

, facl

- get or set a file's Access Control List (ACL)

Synopsis

#include <sys/acl.h>

int acl(char *pathp, int cmd, int nentries, void *aclbufp);
int facl(int fildes, int cmd, int nentries, void *aclbufp);

Description

The acl() and facl() functions get or set the ACL of a file whose name is given by pathp or referenced by the open file descriptor fildes. The nentries argument specifies how many ACL entries fit into buffer aclbufp. The acl() function is used to manipulate ACL on file system objects.

The following types are supported for aclbufp:

aclent_t

Used by the UFS file system.

ace_t

Used by the ZFS and NFSv4 file systems.

The following values for cmd are supported:

SETACL

nentries aclent_t ACL entries, specified in buffer aclbufp, are stored in the file's ACL. All directories in the path name must be searchable.

GETACL

Buffer aclbufp is filled with the file's aclent_t ACL entries. Read access to the file is not required, but all directories in the path name must be searchable.

GETACLCNT

The number of entries in the file's aclent_t ACL is returned. Read access to the file is not required, but all directories in the path name must be searchable.

ACE_SETACL

nentries ace_t ACL entries, specified in buffer aclbufp, are stored in the file's ACL. All directories in the path name must be searchable. Write ACL access is required to change the file's ACL.

ACE_GETACL

Buffer aclbufp is filled with the file's ace_t ACL entries. Read access to the file is required and all directories in the path name must be searchable.

ACE_GETACLCNT

The number of entries in the file's ace_t ACL is returned. Read access to the file is required and all directories in the path name must be searchable.

Return Values

Upon successful completion, acl() and facl() return 0 if cmd is SETACL or ACE_SETACL. If cmd is GETACL, GETACLCNT, ACE_GETACL or ACE_GETACLCNT, the number of ACL entries is returned. Otherwise, -1 is returned and errno is set to indicate the error.

Errors

The acl() function will fail if:

EACCES

The caller does not have access to a component of the pathname.

EFAULT

The pathp or aclbufp argument points to an illegal address.

EINVAL

The cmd argument is not GETACL, SETACL, ACE_GETACL, GETACLCNT, or ACE_GETACLCNT; the cmd argument is SETACL and nentries is less than 3; or the cmd argument is SETACL or ACE_SETACL and the ACL specified in aclbufp is not valid.

EIO

A disk I/O error has occurred while storing or retrieving the ACL.

ENOENT

A component of the path does not exist.

ENOSPC

The cmd argument is GETACL and nentries is less than the number of entries in the file's ACL, or the cmd argument is SETACL and there is insufficient space in the file system to store the ACL.

ENOSYS

The cmd argument is SETACL or ACE_SETACL and the file specified by pathp resides on a file system that does not support ACLs, or the acl() function is not supported by this implementation.

ENOTDIR

A component of the path specified by pathp is not a directory, or the cmd argument is SETACL or ACE_SETACL and an attempt is made to set a default ACL on a file type other than a directory.

ENOTSUP

The cmd argument is GETACL, but the ACL is composed of ace_t entries, and the ACL cannot be translated into aclent_t form.

The cmd argument is ACE_SETACL, but the underlying filesystem only supports ACLs composed of aclent_t entries and the ACL could not be translated into aclent_t form.

EPERM

The effective user ID does not match the owner of the file and the process does not have appropriate privilege.

EROFS

The cmd argument is SETACL or ACE_SETACL and the file specified by pathp resides on a file system that is mounted read-only.

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Evolving

See Also

getfacl(1), setfacl(1), aclcheck(3SEC), aclsort(3SEC)