[*] Factorisation de la configuration LDAP
Ignore-this: a03d38134f839406206dc21026694d4d darcs-hash:20090414022624-ffbb2-6a5db51778c1494d92f9640b9711ee9e8700cd4d.gz
This commit is contained in:
parent
4b58822507
commit
0fea65cd45
7 changed files with 66 additions and 94 deletions
|
@ -1,7 +1,7 @@
|
||||||
# -*- mode: python; coding: utf-8 -*-
|
# -*- mode: python; coding: utf-8 -*-
|
||||||
|
|
||||||
include("mode/space")
|
include("mode/space")
|
||||||
include("ip")
|
include("ldap")
|
||||||
|
|
||||||
header("Acces a la base 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.
|
@# This file should be world readable but not world writable.
|
||||||
|
|
||||||
@BASE dc=crans, dc=org
|
@BASE dc=crans, dc=org
|
||||||
if has("db-server"):
|
%URI "%s" % ldap_socket
|
||||||
%URI "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
@#TLS_CACERT /etc/ssl/certs/CAcrans.pem
|
||||||
%TLS_CACERT "/etc/ssl/certs/CAcrans.pem"
|
|
||||||
else:
|
|
||||||
%URI "ldap://%s/" % admipof("ldap")
|
|
||||||
|
|
|
@ -17,12 +17,8 @@ info["perms"] = 0644
|
||||||
@# | Configuration de la communication avec le serveur |
|
@# | Configuration de la communication avec le serveur |
|
||||||
@# +---------------------------------------------------+
|
@# +---------------------------------------------------+
|
||||||
|
|
||||||
if has("db-server"):
|
@# Base LDAP
|
||||||
@# Socket unix du serveur
|
%uri "%s" % ldap_socket
|
||||||
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
|
||||||
else:
|
|
||||||
@# Addresse du serveur
|
|
||||||
%uri "ldap://%s/" % admipof("ldap")
|
|
||||||
|
|
||||||
@# The distinguished name of the search base.
|
@# The distinguished name of the search base.
|
||||||
%base "dc=crans,dc=org"
|
%base "dc=crans,dc=org"
|
||||||
|
@ -60,27 +56,12 @@ else:
|
||||||
|
|
||||||
# On n'utilise ldap pour résoudre les bases de données
|
# On n'utilise ldap pour résoudre les bases de données
|
||||||
# passwd, group et shadow
|
# 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_shadow "ou=data,dc=crans,dc=org?one"
|
||||||
%nss_base_group "ou=Group,dc=crans,dc=org?one"
|
%nss_base_group "ou=Group,dc=crans,dc=org?one"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
include("mode/space")
|
include("mode/space")
|
||||||
include("secrets")
|
include("secrets")
|
||||||
include("ip")
|
include("ldap")
|
||||||
|
|
||||||
header("""
|
header("""
|
||||||
Fichier de configuration pour libnss-ldapd.
|
Fichier de configuration pour libnss-ldapd.
|
||||||
|
@ -25,12 +25,7 @@ info["perms"] = 0600
|
||||||
@# | Configuration de la communication avec le serveur |
|
@# | Configuration de la communication avec le serveur |
|
||||||
@# +---------------------------------------------------+
|
@# +---------------------------------------------------+
|
||||||
@
|
@
|
||||||
if has("db-server"):
|
%uri "%s" % ldap_socket
|
||||||
@# Socket unix du serveur
|
|
||||||
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
|
||||||
else:
|
|
||||||
@# Addresse du serveur
|
|
||||||
%uri "ldap://%s/" % admipof("ldap")
|
|
||||||
@
|
@
|
||||||
@# Le distinguished name de la base de recherche
|
@# Le distinguished name de la base de recherche
|
||||||
%base "dc=crans,dc=org"
|
%base "dc=crans,dc=org"
|
||||||
|
@ -61,22 +56,7 @@ else:
|
||||||
@base shadow ou=data,dc=crans,dc=org
|
@base shadow ou=data,dc=crans,dc=org
|
||||||
@base group ou=Group,dc=crans,dc=org
|
@base group ou=Group,dc=crans,dc=org
|
||||||
|
|
||||||
if not has('users'):
|
if ldap_filter:
|
||||||
# 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(')')
|
|
||||||
@
|
@
|
||||||
@# Filtre de recherche
|
@# Filtre de recherche
|
||||||
print "filter passwd", ''.join(droits)
|
print "filter passwd (%s)" % ldap_filter
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
include("mode/space")
|
include("mode/space")
|
||||||
include("secrets")
|
include("secrets")
|
||||||
include("ip")
|
include("ldap")
|
||||||
|
|
||||||
header("""
|
header("""
|
||||||
Fichier de configuration de libpam-ldap.
|
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.
|
@# The distinguished name of the search base.
|
||||||
%base "dc=crans,dc=org"
|
%base "dc=crans,dc=org"
|
||||||
|
|
||||||
if has("db-server"):
|
@# Base LDAP
|
||||||
# Le serveur principale ainsi que les réplica se connectent par
|
%uri "%s" % ldap_socket
|
||||||
# socket unix
|
|
||||||
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
|
||||||
else:
|
|
||||||
# Les autres c'est par le réseau
|
|
||||||
%uri "ldap://%s/" % admipof("ldap")
|
|
||||||
|
|
||||||
@# The LDAP version to use (defaults to 3
|
@# The LDAP version to use (defaults to 3
|
||||||
@# if supported by client library)
|
@# 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
|
# On n'utilise ldap pour résoudre les bases de données
|
||||||
# passwd, group et shadow
|
# 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_shadow "ou=data,dc=crans,dc=org?one"
|
||||||
%nss_base_group "ou=Group,dc=crans,dc=org?one"
|
%nss_base_group "ou=Group,dc=crans,dc=org?one"
|
||||||
|
|
|
@ -76,12 +76,3 @@ def onoff(b):
|
||||||
def outl(line):
|
def outl(line):
|
||||||
out(line)
|
out(line)
|
||||||
out("\n")
|
out("\n")
|
||||||
|
|
||||||
# Le serveur qui gère la base de données
|
|
||||||
if has("db-server"):
|
|
||||||
# Pour ceux qui ont la base ou une copie en locale
|
|
||||||
# on regarde dans celle-ci
|
|
||||||
ldap_host = "ldap://localhost/"
|
|
||||||
else:
|
|
||||||
# Sinon on regarde dans la base principale
|
|
||||||
ldap_host = "ldap://ldap.adm.crans.org/"
|
|
||||||
|
|
41
etc/python/ldap.py
Normal file
41
etc/python/ldap.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Configuration du serveur LDAP
|
||||||
|
#
|
||||||
|
|
||||||
|
from ip import admipof
|
||||||
|
|
||||||
|
# ldap_host correspond à l'adresse réseau de la base
|
||||||
|
# ldap_socket à l'adresse physique de la base (donc physique si possible)
|
||||||
|
|
||||||
|
# Le serveur qui gère la base de données
|
||||||
|
if has("db-server"):
|
||||||
|
# Pour ceux qui ont la base ou une copie en locale
|
||||||
|
# on regarde dans celle-ci
|
||||||
|
ldap_host = "ldap://127.0.0.1/"
|
||||||
|
ldap_socket = "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
||||||
|
elif has("new-db"):
|
||||||
|
# On regarde dans la base de test
|
||||||
|
ldap_host = "ldap://%s/" % admipof("newldap")
|
||||||
|
ldap_socket = ldap_host
|
||||||
|
else:
|
||||||
|
# On regarde dans la base principale
|
||||||
|
ldap_host = "ldap://%s/" % admipof("ldap")
|
||||||
|
ldap_socket = ldap_host
|
||||||
|
|
||||||
|
# Filtre de droits pour la connexion
|
||||||
|
if has("users") or has("vert"):
|
||||||
|
# Sur le serveur des adhérents, on veut que tout
|
||||||
|
# les adhérents soit reconnus comme utilisateurs locaux
|
||||||
|
ldap_filter = ''
|
||||||
|
else:
|
||||||
|
# Sur les autres serveurs on filtre pour que seuls
|
||||||
|
# les nounous et les apprentis le soit.
|
||||||
|
droits = ["|(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)")
|
||||||
|
ldap_filter = ''.join(droits)
|
|
@ -6,6 +6,7 @@
|
||||||
# result: le champ a recuperer dans le resultat
|
# result: le champ a recuperer dans le resultat
|
||||||
|
|
||||||
include("secrets")
|
include("secrets")
|
||||||
|
include("ldap")
|
||||||
keysep = " = "
|
keysep = " = "
|
||||||
|
|
||||||
@# Connexion LDAP
|
@# Connexion LDAP
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue