Outils pour utilisateurs

Outils du site


ateliers:serveurmail:ldap-acl

ACL pour LDAP

Voici le fichier commenté et à jour utilisé pour les ACL de l'annuaire ldap d'Anarcha. Ce fichier peut être utilisé tel quel avec la commande ldapmodify :

$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f acl.ldif

Chaque bloc olcAccess est terminé par un ``to * deny`` implicite, il faut donc être exhaustif dans vos ACL.

Attention à ne pas vous bloquer dehors et à ne plus pouvoir utiliser votre répertoire.

/usr/local/lib/ldap/acl.ldif
# La base frontend contiens toutes les bases. Donc les ACL s'appliquant
# à celle-ci, s'applique à toutes les autres.
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
replace: olcAccess
# Ici nous validons l'accès si l'on se connecte en external sur ldapi
# et que l'utilisateur est root. C'est ce qui fait que l'on peut tout
# changer avec `sudo ldapmodify -Y EXTERNAL -H ldapi:///` par exemple.
# On ajoute ici le droit de modifier la configuration aux personnes
# faisant partie du groupe cn=sudo,ou=Groups
olcAccess: to *
  by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
  by group.exact=cn=sudo,ou=Groups,dc=anarcha,dc=pink manage
  by * break
# L'objet racine est lisible par tout le monde
olcAccess: to dn.exact=""
  by * read
# Tout le monde peut lire le contenu de Subschema qui décrit la syntaxe
# utilisée par LDAP
olcAccess: {3}to dn.base="cn=Subschema"
  by * read
 
# Les droits d'accès ici concerne la configuration de LDAP
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
# Seul root - en utilisant -Y EXTERNAL -H ldapi:/// - ainsi que les personnes
# dans le groupe cn=sudo,ou=Groups peut gérer toute
# la configuration.
olcAccess: to *
  by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
  by group.exact=cn=sudo,ou=Groups,dc=anarcha,dc=pink manage
  by * break
 
# Ceci est la première base de donnée, et correspond donc au cn: dc=anarcha,dc=pink
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
# Les sudo peuvent modifier et gérer l'ensemble des groupes faisant parti de l'OU
# System.
olcAccess: to attrs=userPassword
  dn.children="ou=System,dc=anarcha,dc=pink"
  by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
  by group.exact=cn=sudo,ou=Groups,dc=anarcha,dc=pink manage
# Seul l'utilisateur peut écrire son mot de passe
# Tout le monde peut essayer de s'en servir dans un but d'identification (ce n'est
# pas un accès en lecture, mais un accès par les mécanismes d'authentification)
# et le reste du monde ne peut rien faire.
olcAccess: to attrs=userPassword
  by self write
  by anonymous auth
  by * none
# Même chose, mais pour un attribut nęcessaire au fonctionnement de Shadow
olcAccess: to attrs=shadowLastChange
  by self write
  by * read
# La clef SSH e peut être écrite que par l'owner. Tout le monde peut lire.
olcAccess: to attrs=sshPublicKey
  by self write
  by * read
# Tout le monde peut lire notre arbre. C'est pour ça que ldapsearch fonctionne.
# Nobody ne peut rien faire
# Et le groupe sudo a tous les pouvoirs
olcAccess: to *
  by dn.exact=uid=nobody,ou=System,dc=anarcha,dc=pink none
  by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
  by group.exact=cn=sudo,ou=Groups,dc=anarcha,dc=pink manage
  by anonymous read
  by * read

La dernière ligne du fichier DOIT être une ligne vide. A noter qu'au lieu d'utiliser un replace, il est possible d'utiliser add/delete, mais il est plus simple d'avoir une représentation détaillée.

ateliers/serveurmail/ldap-acl.txt · Dernière modification : 2019/01/24 16:23 de okhin