[*] Factorisation de la configuration LDAP

Ignore-this: a03d38134f839406206dc21026694d4d

darcs-hash:20090414022624-ffbb2-6a5db51778c1494d92f9640b9711ee9e8700cd4d.gz
This commit is contained in:
Nicolas Dandrimont 2009-04-14 04:26:24 +02:00
parent 4b58822507
commit 0fea65cd45
7 changed files with 66 additions and 94 deletions

View file

@ -1,7 +1,7 @@
# -*- mode: python; coding: utf-8 -*-
include("mode/space")
include("ip")
include("ldap")
header("Acces a la base ldap")
@ -9,8 +9,5 @@ header("Acces a la base ldap")
@# This file should be world readable but not world writable.
@BASE dc=crans, dc=org
if has("db-server"):
%URI "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
%TLS_CACERT "/etc/ssl/certs/CAcrans.pem"
else:
%URI "ldap://%s/" % admipof("ldap")
%URI "%s" % ldap_socket
@#TLS_CACERT /etc/ssl/certs/CAcrans.pem

View file

@ -17,12 +17,8 @@ info["perms"] = 0644
@# | Configuration de la communication avec le serveur |
@# +---------------------------------------------------+
if has("db-server"):
@# Socket unix du serveur
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
else:
@# Addresse du serveur
%uri "ldap://%s/" % admipof("ldap")
@# Base LDAP
%uri "%s" % ldap_socket
@# The distinguished name of the search base.
%base "dc=crans,dc=org"
@ -60,27 +56,12 @@ else:
# On n'utilise ldap pour résoudre les bases de données
# passwd, group et shadow
# Vert a besoin de tous les utilisateurs pour quelques trucs, genre les scripts de vérif des débris, etc.
droits = []
if has("users") or has("vert"):
# Sur le serveur des adhérents, on veut que tout
# les adhérents soit reconnus comme utilisateurs locaux
%nss_base_passwd "ou=data,dc=crans,dc=org?one"
else:
# Sur les autres serveurs on filtre pour que seuls
# les nounous et les apprentis le soit.
# Il est important de mettre ce filtrage au niveau de
# libnss-ldap et pam-ldap car ssh utilise pam pour les
# mots de passe mais pour l'authentification par clés
# il n'utilise que nss
droits.append("nss_base_passwd ou=data,dc=crans,dc=org?one?|(droits=Nounou)(droits=Apprenti)")
if has("imprimeurs"):
droits.append("(droits=Imprimeur)")
if has("webmasters"):
droits.append("(droits=WebMaster)")
if has("bureau"):
droits.append("(droits=Bureau)")
print ''.join(droits)
if ldap_filter:
passwd_filter = "?%s" % ldap_filter
else:
passwd_filter = ""
%nss_base_passwd "ou=data,dc=crans,dc=org?one%s" % passwd_filter
%nss_base_shadow "ou=data,dc=crans,dc=org?one"
%nss_base_group "ou=Group,dc=crans,dc=org?one"

View file

@ -2,7 +2,7 @@
include("mode/space")
include("secrets")
include("ip")
include("ldap")
header("""
Fichier de configuration pour libnss-ldapd.
@ -25,12 +25,7 @@ info["perms"] = 0600
@# | Configuration de la communication avec le serveur |
@# +---------------------------------------------------+
@
if has("db-server"):
@# Socket unix du serveur
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
else:
@# Addresse du serveur
%uri "ldap://%s/" % admipof("ldap")
%uri "%s" % ldap_socket
@
@# Le distinguished name de la base de recherche
%base "dc=crans,dc=org"
@ -61,22 +56,7 @@ else:
@base shadow ou=data,dc=crans,dc=org
@base group ou=Group,dc=crans,dc=org
if not has('users'):
# Sur les serveurs autres que zamok, on filtre pour que seuls
# les nounous et les apprentis soient vus.
# Il est important de mettre ce filtrage au niveau de
# libnss-ldap et pam-ldap car ssh utilise pam pour les
# mots de passe mais pour l'authentification par clés
# il n'utilise que nss
droits = ['(|']
droits.append("(droits=Nounou)(droits=Apprenti)")
if has("imprimeurs"):
droits.append("(droits=Imprimeur)")
if has("webmasters"):
droits.append("(droits=WebMaster)")
if has("bureau"):
droits.append("(droits=Bureau)")
droits.append(')')
if ldap_filter:
@
@# Filtre de recherche
print "filter passwd", ''.join(droits)
print "filter passwd (%s)" % ldap_filter

View file

@ -2,7 +2,7 @@
include("mode/space")
include("secrets")
include("ip")
include("ldap")
header("""
Fichier de configuration de libpam-ldap.
@ -17,13 +17,8 @@ Pour des informations détaillées voir pam_ldap.conf(5)
@# The distinguished name of the search base.
%base "dc=crans,dc=org"
if has("db-server"):
# Le serveur principale ainsi que les réplica se connectent par
# socket unix
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
else:
# Les autres c'est par le réseau
%uri "ldap://%s/" % admipof("ldap")
@# Base LDAP
%uri "%s" % ldap_socket
@# The LDAP version to use (defaults to 3
@# if supported by client library)
@ -71,26 +66,12 @@ if not has("db-main"):
# On n'utilise ldap pour résoudre les bases de données
# passwd, group et shadow
droits = []
if has("users"):
# Sur le serveur des adhérents, on veut que tout
# les adhérents soit reconnus comme utilisateurs locaux
%nss_base_passwd "ou=data,dc=crans,dc=org?one"
else:
# Sur les autres serveurs on filtre pour que seuls
# les nounous et les apprentis le soit.
# Il est important de mettre ce filtrage au niveau de
# libnss-ldap et pam-ldap car ssh utilise pam pour les
# mots de passe mais pour l'authentification par clés
# il n'utilise que nss
droits.append("nss_base_passwd ou=data,dc=crans,dc=org?one?|(droits=Nounou)(droits=Apprenti)")
if has("imprimeurs"):
droits.append("(droits=Imprimeur)")
if has("webmasters"):
droits.append("(droits=WebMaster)")
if has("bureau"):
droits.append("(droits=Bureau)")
print ''.join(droits)
if ldap_filter:
passwd_filter = "?%s" % ldap_filter
else:
passwd_filter = ""
%nss_base_passwd "ou=data,dc=crans,dc=org?one%s" % passwd_filter
%nss_base_shadow "ou=data,dc=crans,dc=org?one"
%nss_base_group "ou=Group,dc=crans,dc=org?one"