Object ACL
Back to current versionRestore this version

Overview[1]#

Object ACL is a LDAPSyntaxes used in EDirectory that Contains Access Control information for the object and its attributes.

Every LDAP Entry in the NDS tree has an ACL (eDirectory Attribute). This attribute holds information about which trustees have access to the LDAP Entry itself (entry rights) and which trustees have access to the attributes for the entry. This information is stored in sets of information containing the following:

Required Access Privileges#

The table below shows the Required Access Privileges for various operations.
OperationObject PrivilegesLDAP Attribute PrivilegesLDAP
Compare attribute valueNONE ANDRead or Compare
Read attribute valueNONE1ANDRead
List subordinatesBrowse1ANDNONE
Add object2Add (on the parent object) ANDNONE
SearchBrowse on each object ANDCompare on each attribute in filter; Read on each attribute returned.
Add attribute to objectNONE ANDWrite
Add value to attributeNONE ANDWrite
Delete attributeNONE ANDWrite
Delete value of attributeNONE ANDWrite
Delete objectDelete4ANDWrite on each present attribute
Move objectDelete (at the source location); Add (at the destination) ANDWrite on each present attribute
Write selfNONE ANDSelf
Modify Name (RDN)Rename8ANDNONE

LDAP Format[1][2]#

Object ACL is a proprietary LDAPSyntaxes defined for EDirectory. This syntax is described in the Novell LDAP Library Documentation for Developers. The content is a string which defines one permission entry in an entry's access control list. From LDAP is shows as an Component Syntax attribute and shows like:
<privileges> # <scope> # <subjectname> # <protectedattrname>
The ACL (eDirectory Attribute) is assigned on the entry to which the subjectname is granted access. (ie the Target Resource)

Remarks[1]#

An Object ACL value can protect either an object or an attribute. The protected object is always the one that contains the ACL attribute. If an ACL (eDirectory Attribute) entry is to apply to the object as a whole, the protectedattrname name should be left empty (NULL). If a specific attribute is to be protected, it should be named in the ACL (eDirectory Attribute) entry.

You can match an ACL value against either a subject (trustee) or a privilege set, or both. If the subject name is not to be considered in the comparison, specify it as NULL. If the privilege set is not to be considered in the comparison, specify an “approximate match” with a privilege set value of zero.

The Object ACL syntax supports both matching for EQUALITY and APPROXIMATE matching. The difference between matching for equality and approximate matching concerns the privileges field of the comparison value.

When matching for EQUALITY, the privilege set must match exactly for the comparison to succeed.

When APPROXIMATE matching has been selected, any bits in the privilege field in the filter that are set must also be set in the target. Any other bits in the target are ignored.

Values with the same protectedAttrName and subjectName fields are considered to be duplicate, and so are not permitted.

For information on bit mask for the privileges field and on the special values available for protectedAttrName and subjectName fields, see the Object_ACL_T structure.

We have never been able to perform a search on the ACL (eDirectory Attribute) from LDAP that was not exact match.

eDirectory Privileges Field#

The privilege value depends on the setting for the protectedAttrName:

Scope Field#

The scope determines if the regarding permission is to be inherited to child objects. If the permission is only set for the object itself, the string 'entry' is used, otherwise the string 'subtree' is used.

Subjectname Field#

The object distinguish name is the DN of the trustee which has the regarding permission. Subjectname field is the complete name of the specific object in the eDirectory tree that is being granted rights.

The Subjectname Field can also be one of the following special entry names:

Referential Integrity is imposed on the Subjectname Field which identifies the EDirectory object referred to by the Field and must refer to a DN of an object that exists in the eDirectory tree. eDirectory verifies that this field refers to an existing object.

protectedAttrName field#

The attribute string specifies the attribute for which the permission is set. In addition to attribute names, the following to generic strings are allowed:

API Data Structures#

typedef struct 
{
   pnstr8          protectedAttrName; 
   pnstr8          subjectName; 
   nuint32         privileges; 
} Object_ACL_T;

Transfer Format#

uint32     Length 
unicode    Name of Protected Attribute 
Align4 
unicode    Subject Name 
Align4 
uint32     Privileges

Binary#

ndsAcl ::= SEQUENCE {
   privileges          uint32,
   subjectName         LDAPDN,
   protectedAttrName   LDAPString
}

More Information#

There might be more information for this subject on one of the following: