SETFACL(1) User Commands SETFACL(1)
NAME
setfacl - modify the Access Control List (ACL) for a file or files
SYNOPSIS
setfacl [
-r]
-s acl_entries file setfacl [
-r]
-md acl_entries file setfacl [
-r]
-f acl_file fileDESCRIPTION
For each file specified,
setfacl either replaces its entire
ACL,
including the default
ACL on a directory, or it adds, modifies, or
deletes one or more
ACL entries, including default entries on
directories.
The
setfacl utility can only manipulate POSIX-draft
ACLs. See
acl(7) for a description of the difference between the older POSIX-draft
ACLs and the newer NFSv4
ACLs. The
chmod(1) utility can be used to
manipulate
ACLs on all types of file system.
When the
setfacl command is used, it can result in changes to the
file permission bits. When the user
ACL entry for the file owner is
changed, the file owner class permission bits are modified. When the
group
ACL entry for the file group class is changed, the file group
class permission bits are modified. When the other
ACL entry is
changed, the file other class permission bits are modified.
If you use the
chmod(1) command to change the file group owner
permissions on a file with
ACL entries, both the file group owner
permissions and the
ACL mask are changed to the new permissions. Be
aware that the new
ACL mask permissions can change the effective
permissions for additional users and groups who have
ACL entries on
the file.
A directory can contain default
ACL entries. If a file or directory
is created in a directory that contains default
ACL entries, the
newly created file has permissions generated according to the
intersection of the default
ACL entries and the permissions requested
at creation time. The
umask(1) are not applied if the directory
contains default
ACL entries. If a default
ACL is specified for a
specific user (or users), the file has a regular
ACL created.
Otherwise, only the mode bits are initialized according to the
intersection described above. The default
ACL should be thought of as
the maximum discretionary access permissions that can be granted.
Use the
setfacl command to set ACLs on files in a UFS file system,
which supports POSIX-draft ACLS (or
aclent_t style ACLs). Use the
chmod command to set ACLs on files in a ZFS file system, which
supports NFSv4-style ACLS (or
ace_t style ACLs).
acl_entries Syntax
For the
-m and
-s options,
acl_entries are one or more comma-
separated
ACL entries.
An
ACL entry consists of the following fields separated by colons:
entry_type Type of
ACL entry on which to set file permissions. For
example,
entry_type can be
user (the owner of a file)
or
mask (the
ACL mask).
uid or
gid User name or user identification number. Or, group name
or group identification number.
perms Represents the permissions that are set on
entry_type.
perms can be indicated by the symbolic characters
rwx or a number (the same permissions numbers used with the
chmod command).
The following table shows the valid
ACL entries (default entries can
only be specified for directories):
ACL Entry Description
--------------------------------------------------------------------
u[ser]::
perms File owner permissions.
g[roup]::
perms File group owner permissions.
o[ther]:
perms Permissions for users other than the
file owner or members of file group
owner.
m[ask]:
perms The
ACL mask. The mask entry
indicates the maximum permissions
allowed for users (other than the
owner) and for groups. The mask is a
quick way to change permissions on
all the users and groups.
u[ser]:
uid:perms Permissions for a specific user. For
uid, you can specify either a user
name or a numeric UID.
g[roup]:
gid:perms Permissions for a specific group. For
gid, you can specify either a group
name or a numeric GID.
d[efault]:u[ser]::
perms Default file owner permissions.
d[efault]:g[roup]::
perms Default file group owner permissions.
d[efault]:o[ther]:
perms Default permissions for users other
than the file owner or members of the
file group owner.
d[efault]:m[ask]:
perms Default
ACL mask.
d[efault]:u[ser]:
uid:
perms Default permissions for a specific
user. For
uid, you can specify either
a user name or a numeric UID.
d[efault]:g[roup]:
gid:
perms Default permissions for a specific
group. For
gid, you can specify
either a group name or a numeric GID.
For the
-d option,
acl_entries are one or more comma-separated
ACL entries without permissions. Notice that the entries for file owner,
file group owner,
ACL mask, and others can not be deleted.
OPTIONS
The options have the following meaning:
-d acl_entries Deletes one or more entries from the file. The
entries for the file owner, the file group owner,
and others can not be deleted from the
ACL. Notice
that deleting an entry does not necessarily have
the same effect as removing all permissions from
the entry.
-f acl_file Sets a file's
ACL with the
ACL entries contained in
the file named
acl_file. The same constraints on
specified entries hold as with the
-s option. The
entries are not required to be in any specific
order in the file. Also, if you specify a dash (
-)
for
acl_file, standard input is used to set the
file's
ACL.
The character
# in
acl_file can be used to indicate
a comment. All characters, starting with the
# until the end of the line, are ignored. Notice
that if the
acl_file has been created as the output
of the
getfacl(1) command, any effective
permissions, which follow a
#, are ignored.
-m acl_entries Adds one or more new
ACL entries to the file,
and/or modifies one or more existing
ACL entries on
the file. If an entry already exists for a
specified
uid or
gid, the specified permissions
replace the current permissions. If an entry does
not exist for the specified
uid or
gid, an entry is
created. When using the
-m option to modify a
default
ACL, you must specify a complete default
ACL (user, group, other, mask, and any additional
entries) the first time.
-r Recalculates the permissions for the
ACL mask
entry. The permissions specified in the
ACL mask
entry are ignored and replaced by the maximum
permissions necessary to grant the access to all
additional user, file group owner, and additional
group entries in the
ACL. The permissions in the
additional user, file group owner, and additional
group entries are left unchanged.
-s acl_entries Sets a file's
ACL. All old
ACL entries are removed
and replaced with the newly specified
ACL. The
entries need not be in any specific order. They are
sorted by the command before being applied to the
file.
Required entries:
o Exactly one
user entry specified for the
file owner.
o Exactly one
group entry for the file
group owner.
o Exactly one
other entry specified.
If there are additional user and group entries:
o Exactly one
mask entry specified for the
ACL mask that indicates the maximum
permissions allowed for users (other
than the owner) and groups.
o Must not be duplicate
user entries with
the same
uid.
o Must not be duplicate
group entries with
the same
gid.
If
file is a directory, the following default
ACL entries can be specified:
o Exactly one
default user entry for the
file owner.
o Exactly one
default group entry for the
file group owner.
o Exactly one
default mask entry for the
ACL mask.
o Exactly one
default other entry.
There can be additional
default user entries and
additional
default group entries specified, but
there can not be duplicate additional
default user entries with the same
uid, or duplicate
default group entries with the same
gid.
EXAMPLES
Example 1: Adding read permission only
The following example adds one
ACL entry to file
abc, which gives
user
shea read permission only.
setfacl -m user:shea:r-- abc Example 2: Replacing a file's entire ACL
The following example replaces the entire
ACL for the file
abc, which
gives
shea read access, the file owner all access, the file group
owner read access only, the
ACL mask read access only, and others no
access.
setfacl -s user:shea:rwx,user::rwx,group::rw-,mask:r--,other:--- abc Notice that after this command, the file permission bits are
rwxr-----. Even though the file group owner was set with read/write
permissions, the
ACL mask entry limits it to have only read
permission. The mask entry also specifies the maximum permissions
available to all additional user and group
ACL entries. Once again,
even though the user
shea was set with all access, the mask limits it
to have only read permission. The
ACL mask entry is a quick way to
limit or open access to all the user and group entries in an
ACL. For
example, by changing the mask entry to read/write, both the file
group owner and user
shea would be given read/write access.
Example 3: Setting the same ACL on two files
The following example sets the same
ACL on file
abc as the file
xyz.
getfacl xyz | setfacl -f - abcFILES
/etc/passwd password file
/etc/group group file
SEE ALSO
chmod(1),
getfacl(1),
umask(1),
aclcheck(3SEC),
aclsort(3SEC),
group(5),
passwd(5),
acl(7),
attributes(7) February 8, 2020 SETFACL(1)