4.3 ACLs

4.3.1 Verbessern von Such- und Lesevorgängen in eDirectory

Eine LDAP-Suche in eDirectory gibt Ergebnisse je nach der Anzahl der für einen Benutzer zurückgegebenen Attribute (inetOrgPerson) zurück.

Wenn in eDirectory ein Objekt erstellt wird, können standardmäßige ACLs zum Objekt hinzugefügt werden. Dies ist abhängig von den ACL-Vorlagen in der Schemadefinition der Objektklasse, zu der das Objekt gehört. In der standardmäßigen Konfiguration für inetOrgPerson können beispielsweise bis zu sechs ACLs zu einem Benutzerobjekt hinzugefügt werden. Wenn eine LDAP-Suchanfrage ausgeführt wird, dieses Benutzerobjekt mit allen Attributen zurückzugeben, dauert es etwas länger, dieses Objekt zum Client zurückzugeben, als das Benutzerobjekt ohne ACL-Attribute zurückzugeben.

Die standardmäßigen ACLs können deaktiviert werden. Dies ist jedoch von den Administratoren möglicherweise nicht erwünscht, da die ACLs für eine bessere Zugriffssteuerung erforderlich sind. Sie können jedoch die Suchleistung verbessern, indem Sie sie nicht anfordern oder als gefiltert gelesene Attribute kennzeichnen. Diese Änderungen führen nicht zum Anhalten von Anwendungen, weil die meisten Anwendungen effektive Berechtigungen verwenden und nicht auf bestimmten ACLs beruhen.

ACLs nicht anfordern: Ein ACL-Attribut wird von mehreren Anwendungen nicht benötigt. Diese Anwendungen können so geändert werden, dass sie bestimmte Attribute anfordern, die für die Anwendung relevant sind. Dies ermöglicht eine bessere Leistung beim Ausführen von LDAP-Suchen.

ACL als gefiltert gelesen kennzeichnen: Wenn eine Anwendung nicht geändert werden kann, kann das ACL-Attribut von einem Administrator über arf_acl.ldif als gefiltert gelesen gekennzeichnet werden. Wenn das ACL-Attribut als gefiltert gelesen gekennzeichnet wird, gibt der Server das Attribut nicht zurück, wenn für den Eintrag alle Attribute angefordert wurden. Wenn die LDAP-Suche jedoch ausgeführt wird, um operationelle Attribute zurückzugeben, oder wenn die Anforderung spezifisch nach ACL-Attributen fragt, wird das markierte Attribut zurückgegeben. Mit rrf_acl.ldif kann die Kennzeichnung „gefiltert gelesen“ eines ACL-Attributs deaktiviert werden. Die LDIFs beeinflussen das ACL-Attribut im Schema. Sie können daher nur von einem Benutzer mit Supervisor-Rechten im Baumstamm erweitert werden.

Standardmäßig ist ein ACL-Attribut nicht als gefiltert gelesen gekennzeichnet, sodass keine Leistungsverbesserung für Anforderungen zur Zurückgabe aller Attribute ersichtlich ist.

Die folgende Tabelle zeigt die Speicherorte von arf_acl.ldif und rrf_acl.ldif auf verschiedenen Plattformen.

Plattform

Standort

Linux

  • /opt/novell/eDirectory/lib/nds-schema/

Windows

  • <Entpackungsspeicherort>\nt\I386\NDSonNT\ndsnt\nds

4.3.2 Deaktivieren von ACL-Vorlagen

Sie können die Vorlagen der Zugriffssteuerungslisten (ACLs) deaktivieren, um die Sammelverarbeitungsleisten zu verbessern. Als Konsequenz fehlen daraufhin einige ACLs. Sie können dies jedoch beheben, indem Sie die erforderlichen ACLs zur LDIF-Datei hinzufügen oder später anwenden.

  1. Führen Sie den folgenden Befehl aus:

    ldapsearch -D cn_of_admin -w password -b cn=schema -s base objectclasses=inetorgperson 
    

    Auf diesen Befehl wird Folgendes zurückgegeben:

    dn: cn=schema
    
    objectClasses: (2.16.840.1.113730.3.2.2 NAME ’inetOrgPerson’ SUP
    organizationalPerson STRUCTURAL MAY (groupMembership $ ndsHomeDirectory
    $ loginAllowedTimeMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRemaining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTime $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestriction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $ passwordMinimumLength $ passwordRequired $
    passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $ 
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimumAccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate
    $ nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUSAttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory
    $ rADIUSDefaultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $ rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense $ departmentNumber $ employeeNumber $ employeeType $
    givenName $ homePhone $ homePostalAddress  $ initials $ jpegPhoto $
    labeledUri $ mail $ manager $ mobile $ pager $ ldapPhoto $
    preferredLanguage $ roomNumber $ secretary $ uid $ userSMIMECertificate
    $ x500UniqueIdentifier $ displayName $ userPKCS12) X-NDS_NAME ’User’ X
    -NDS_NOT_CONTAINER ’1’ X-NDS_NONREMOVABLE ’1’ X-NDS_ACL_TEMPLATES (’2#subtree#[Self]#[All Attributes Rights]’ ’6#entry#[Self]#loginScript’ ’1#subtree#[Root Template]#[Entry Rights]’ ’2#entry#[Public]#messageServer’ ’2#entry#[Root Template]#groupMembership’ ’6#entry#[Self]#printJobConfiguration’ ’2#entry#[Root  Template]#networkAddress’))
    
  2. Löschen Sie die fett gedruckten Angaben aus der im vorigen Schritt notierten Ausgabe.

  3. Speichern Sie die überarbeitete Ausgabe als LDIF-Datei.

  4. Fügen Sie die folgenden Angaben zur neu gespeicherten LDIF-Datei hinzu:

    dn: cn=schema
    
    changetype: modify
    
    delete: objectclasses
    
    objectclasses: (2.16.840.1.113730.3.2.2)
    
    -
    
    add:objectclasses
    

    Die LDIF-Datei ähnelt nun dem folgenden Beispiel:

    dn: cn=schema
    
    changetype: modify
    
    delete: objectclasses
    
    objectclasses: (2.16.840.1.113730.3.2.2)
    
    -
    
    add:objectclasses
    
    objectClasses: (2.16.840.1.113730.3.2.2 NAME ’inetOrgPerson’ SUP
    organizationalPerson STRUCTURAL MAY (groupMembership $ ndsHomeDirectory
    $ loginAllowedTimeMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRemaining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTime $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestriction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $ passwordMinimumLength $ passwordRequired
    $ passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $ 
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimumAccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate $
    nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUSAttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory $
    rADIUSDefaultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $ rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense $ departmentNumber $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress  $ initials $ jpegPhoto $ labeledUri $ mail
    $ manager $ mobile $ pager $ ldapPhoto $ preferredLanguage $ roomNumber
    $ secretary $ uid $ userSMIMECertificate $ x500UniqueIdentifier $
    displayName $ userPKCS12) X-NDS_NAME ’User’ X-ND S_NOT_CONTAINER ’1’ X
    -NDS_NONREMOVABLE ’1’)
    
  5. Geben Sie den folgenden Befehl ein:

    ldapmodify -D cn_of_admin -w password -f LDIF_file_name