1 | | = But initial = |
2 | | |
3 | | Il nous faut pouvoir stocker diverses informations sur les utilisateurs: |
4 | | |
5 | | * les informations utilisées par les systèmes d'exploitation (login, mot de passe) |
6 | | * les informations d'annuaires (adresses, mail) |
7 | | * diverses autres informations que nous voulons centralisés |
8 | | |
9 | | Ces information doivent ensuite être propagées vers les divers annuaires: |
10 | | |
11 | | * NIS - compatibilité pour les anciens UNIX |
12 | | * (open)LDAP - pour les unix |
13 | | * Active Directory (ldap) - pour les windows |
14 | | * ... |
15 | | |
16 | | Le but étant de n'avoir à créer chaque compte utilisateur une seule fois pour l'ensemble des base. |
17 | | |
18 | | = Avant propos = |
19 | | |
20 | | Plusieurs problématiques se posent, la principal étant qu'aucune base ne fonctionne de manière similaire. |
21 | | On trouve des différences de: |
22 | | |
23 | | * contenu |
24 | | * structure |
25 | | * fonctionnalités |
26 | | |
27 | | Hormis les annuaires LDAP conçu pour être partagés par des systèmes très variés, les bases ne contiennent en générale que les information |
28 | | qui leur sont directement utile. |
29 | | |
30 | | De plus elle ne permettent pas forcément de stocker ce dont nous avons besoin. |
31 | | |
32 | | == Base de compte UNIX / NIS == |
33 | | |
34 | | === Base UNIX === |
35 | | |
36 | | Une base de compte UNIX est formée de fichier texte: |
37 | | |
38 | | * passwd |
39 | | * group |
40 | | |
41 | | et éventuellement (mode shadow): |
42 | | |
43 | | * shadow |
44 | | * gshadow (inutilisé dans la pratique) |
45 | | |
46 | | Chaque fichier contient une liste de champs séparé par des ':' dont le contenu est normalisé (POSIX). |
47 | | |
48 | | Cette n'apporte aucune fonctionnalité en elle même (pas de logiciel mis en jeu) mais chaque composant logiciel |
49 | | sait quoi trouver où. Les champs n'ont pas de nom normalisés. |
50 | | |
51 | | De plus l'introduction récente de pam-tcb dans certains distribution linux modifie la signification et la gestion des mots de passe. |
52 | | |
53 | | === Base NIS === |
54 | | |
55 | | C'est une base centralisée et réseau construite à partir d'une base UNIX. |
56 | | |
57 | | En interne les utilise des fichiers DBM, donc sous la forme clef => valeur, la clef servant d'index et étant donc unique, |
58 | | la valeur n'est autre que la ligne du fichier UNIX d'origine. A noter que la longueur maximale d'une ligne est 1024 octets |
59 | | pour les anciens UNIX et que cette limitation est conservée sous linux pour compatibilité. |
60 | | |
61 | | Les champs utilisé comme clef sont: |
62 | | |
63 | | || '''table d'origine''' || '''champs''' || |
64 | | || passwd || login || |
65 | | || passwd || uid || |
66 | | || group || nom || |
67 | | || group || gid || |
68 | | || shadow || login || |
69 | | |
70 | | Cette base est à priori en lecture seule et ne fourni comme moyen d'entrée que la lecture d'une base UNIX. En revanche il doit |
71 | | être possible d'écrire dans les fichiers DBM directement en prenant soin d'incrémenter les compteurs internes de révision. |
72 | | |
73 | | == LDAP == |
74 | | |
75 | | Un ldap est une base de donnée: |
76 | | |
77 | | * structurée |
78 | | * type d'objets identifiées |
79 | | * attributs identifiés et normalisés |
80 | | * arborescente |
81 | | * gérant les contraintes référentielles et unicitaires |
82 | | * distribuée et réseau |
83 | | * intégrant une gestion de droit et authentification |
84 | | |
85 | | Un ldap, d'après la norme, se doit d'être transactionnel mais le client n'a aucun contrôle et chaque requête correspond à une transaction. |
86 | | |
87 | | === openLDAP === |
88 | | |
89 | | LDAP tout ce qu'il y a de plus classique, en sachant: |
90 | | |
91 | | * réplication maître => esclave |
92 | | * pas de modification dynamique des schéma (à ce jour) |
93 | | |
94 | | === Active Directory (ldap) === |
95 | | |
96 | | Il s'agit du LDAP de Microsoft, celui-ci sert de base pour Active Directory. |
97 | | |
98 | | Il fonctionne en réplication maître à maître |
99 | | |
100 | | Bien qu'il s'agisse d'un vrai LDAP, on notera: |
101 | | |
102 | | * les objets peuvent se voir affecter n'importe quel attribut bien qu'il n'ait pas l'objectClass associé |
103 | | * certains champs sont placés en fixant d'autre champs, ceux-ci sont en général en lecture seule |
104 | | * les messages d'erreurs retournés sont incompréhensibles et inutiles |
105 | | |
106 | | |
107 | | |