Consider a user who is trying to open a resource that he or she does not own, and
the owner created an ACL on the resource. The server will use the resource ACL and
follow the precedence
checks to determine whether the user has access. The user precedence check is TRUE
if the requesting user ID matches a user record in the ACL. The user access is allowed
or denied based on the permissions defined in that user record. If there is no record
that matches the requesting user ID in the resource ACL, then the server proceeds
to the group check.
The group precedence check is TRUE if the requesting user’s group matches a group
record in the ACL. The requesting user is allowed or denied access to the resource
based on the permissions
defined in that group record. If neither the user precedence check nor the group
precedence check is TRUE, then universal permissions are checked to determine access.
When a TRUE precedence is found in the ACL, the requesting user is given or denied
access to the resource based on the access
being requested and the permissions defined for the TRUE precedence level. For example,
if the user is requesting Read access to the resource, and the owner created an ACL
on the resource for the user that grants Read permission only, then Read access is
allowed. However, if the same user requests Write access to the resource, access
is denied. When a precedence check for an ACL is FALSE, indicating that no ACL record
exists for the precedence level check, then the evaluation proceeds to the next precedence
level until a precedence level evaluates to TRUE, or all levels are checked.
The ability to define permissions that deny access to specific users is useful when
you want to allow access to a resource to all members in a group except for one particular
member. This can be done by creating an ACL on the resource that grants the group
Read permission to the resource. Then, modifying
the ACL to deny Read permission to the particular member. Because the user precedence
check is performed before the group precedence check, the denied member will be TRUE
and he or she will be denied access. The other group members will not match the
user ACL precedence, checking FALSE, and will proceed to the group precedence check,
which will be TRUE. They will have group Read permission to the resource. UNIX File
System permissions cannot prohibit a particular user from having group access to a
file.
The key thing to remember
is that the server uses the first TRUE precedence record to determine
access to the resource. Universal permissions do not necessarily grant
access to everyone. If a user is denied access before the evaluation
proceeds to the universal access level, the user will not be granted
the universal access.