PreviousNext

Data Structures

ACL Entry Syntax
An ACL entry has the following syntax:

type[:key]:permissions

where:

type
Identifies the role of the ACL entry.

key
Identifies the specific principal or group to whom the entry applies. For an entry type of extended, key contains the ACL data.

permissions
The ACL permissions.

The syntax of an ACL entry is a list of two or three elements. The first element is the type, the optional second element is the key, and the last element is the set of permission bits. The permission bits are represented as a single character if the permission is granted and as a hyphen (-) if it is not. An ACL is a list of ACL entries. An example of an ACL is as follows:

{unauthenticated -r-----}
{user_obj crwx---}
{user britten crwx---}
{user mahler -rwx---}
{foreign_user /.../C=US/O=OSF/OU=dce/pro/bach crwxidt}
{group_obj -rwx---}
{group dds -rwx---}
{any_other -r-----}, {extended c417faf8-8340-11c9-ace3-\
08001e5559bb.a.b.c.a1.4.0a0b0c0d -rwx---}

On output the above syntax is used, with one addition. If masking produces ineffective bits in an ACL entry, the entry has two additional elements. The first is the string effective and the second element is the set of effective permissions. This is added only for those ACL entries that have ineffective bits. For example:

{mask_obj -r-----}
{user_obj crwx---}
{user britten crwx--- effective -r-----}

On input, do not include the identifier effective or the effective permissions. You can enter permissions in any order, omitting hyphens (-) for permissions not granted. For example, the above ACL could be entered as:

{mask_obj r}
{user_obj crwx}
{user britten wcrx}

Defined ACL Entry Types

user_obj
Permissions for the object's real or effective user.

group_obj
Permissions for the object's real or effective group.

other_obj
Permissions for others in the local cell who are not otherwise named by a more specific entry type.

user
Permissions for a specific principal user in the ACL's cell. This type of ACL entry must include a key that identifies the specific principal.

group
Permissions for a specific group in the ACL's cell. This type of ACL entry must include a key that identifies the specific group.

foreign_user
Permissions for a specific, authenticated user in a foreign cell. This type of ACL entry must include a key that identifies the specific principal and the principal's cell.

foreign_group
Permissions for a specific, authenticated group in a foreign cell. This type of ACL entry must include a key that identifies the specific group and the group's cell.

foreign_other
Permissions for all authenticated principals in a specific foreign cell, unless those principals are specifically named in an ACL entry of type foreign_user or are members in a group named in an entry of type foreign_group. This type of ACL entry must include a key that identifies the specific foreign cell.

any_other
Permissions for all authenticated principals unless those principals match a more specific entry in the ACL.

mask_obj
Permissions for the object mask that is applied to all entry types except user_obj, other_obj, and unauthenticated.

unauthenticated
Maximum permissions applied when the accessor does not pass authentication procedures. This entry is used for principals that have failed authentication due to bad keys, principals who are entirely outside of any authentication cell, and principals who choose not to use authenticated access. Permissions granted to an unauthenticated principal are masked with this entry, if it exists. If this entry does not exist, access to unauthenticated principals is always denied.

extended
A special entry that allows client applications running at earlier DCE versions to copy ACLs to and from ACL Managers running at the current DCE version without losing any data. The extended entry allows the application running at the lower version to obtain a printable form of the ACL. The extended ACL entry has the following form:

extended:uuid.ndr.ndr.ndr.ndr.number_of_bytes.data

where:

uuid
Identifies the type extended ACL entry. (This UUID can identify one of the ACL entry types described here or an as-yet-undefined ACL entry type.)

ndr.ndr.ndr.ndr
Up to three network data representation (NDR) format labels (in hexadecimal format and separated by periods) that identify the encoding of data.

number_of_bytes
A decimal number that specifies the total number of bytes in data.

data
The ACL data in hexadecimal form. (Each byte of ACL data is two hexadecimal digits.) The ACL data includes all of the ACL entry specifications except the permissions (described later) that are entered separately. The data is not interpreted; it is assumed that the ACL manager to which the data is being passed can understand that data.

user_obj_delegate
Delegated permissions for the object's real or effective user.

group_obj_delegate
Delegated permissions for the object's real or effective group.

other_obj_delegate
Delegated permissions for others in the local cell who are not otherwise named by a more specific entry type.

user_delegate
Delegated permissions for a specific principal user in the ACL's cell. This type of ACL entry must include a key that identifies the specific principal.

group_delegate
Delegated permissions for a specific group in the ACL's cell. This type of ACL entry must include a key that identifies the specific group.

foreign_user_delegate
Delegated permissions for a specific, authenticated user in a foreign cell. This type of ACL entry must include a key that identifies the specific principal and the principal's cell.

foreign_group_delegate
Delegated permissions for a specific, authenticated group in a foreign cell. This type of ACL entry must include a key that identifies the specific group and the group's cell.

foreign_other_delegate
Delegated permissions for all authenticated principals in a specific foreign cell, unless those principals are specifically named in an ACL entry of type foreign_user or foreign_user_delegate or are members in a group named in an entry of type foreign_group or foreign_group_delegate. This type of ACL entry must include a key that identifies the specific foreign cell.

any_other_delegate
Delegated permissions for all authenticated principals unless those principals match a more specific entry in the ACL.

Key
The key identifier (principal or group name) specifies the principal or group to which the ACL entry applies. For entries of entry type extended, key is the data passed from one ACL Manager to another. A key is required for the following types of ACL entries:

user
Requires a principal name only.

group
Requires a group name only.

foreign_user
Requires a fully qualified cell name in addition to the principal name.

foreign_group
Requires a fully qualified cell name in addition to the group name.

foreign_other
Requires a fully qualified cell name.

foreign_user_delegate
Requires a fully qualified cell name, the principal name, and a key that identifies the principal and the principal's cell.

foreign_group_delegate
Requires a fully qualified cell name, the group name, and a key that identifies the group and the group's cell.

Permissions
The permissions argument specifies the set of permissions that defines the access rights conferred by the entry. Since each ACL manager defines the permission tokens and meanings appropriate for the objects it controls, the actual tokens and their meanings vary. For example, the Distributed File Service (DFS), the Directory Service, and the Security Registry Service each implement a separate ACL manager, and each can use a different set of tokens and permissions. This means that file system objects, objects in the namespace, and registry objects could each use different permissions. Use the permissions operation to display the currently available tokens and their meanings. See the documentation for the DCE component you are using to obtain a more detailed description of its specific permissions.