<h2>But de ce document</h2>
<p class="spip">Ce document me sert de mémo pour mettre en place un contrôleur de domaine avec Samba et une authentification des comptes Linux/Samba avec LDAP.</p>

<p class="spip">J’ai testé ce mémo sur une Debian ETCH.</p>

<h2>Installation d’OpenLDAP</h2>
<p class="spip"><code class='spip_code' dir='ltr'># aptitude install slapd ldap-utils </code></p>

<p class="spip">Questions posées lors de l’installation de slapd</p>

<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Questions</strong></th><th scope='col'><strong class="spip">Réponses</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>Nom de votre organisation</td><td>mondomaine.net</td></tr>
<tr class="row_odd"><td>Mot de passe de l’administrateur</td><td>monmotdepasse</td></tr>
<tr class="row_even"><td>Module de base de données à utiliser</td><td>BDB</td></tr>
<tr class="row_odd"><td>Faut-il supprimer la base de données à la purge du paquet ?</td><td>NON</td></tr>
<tr class="row_even"><td>Faut-il déplacer l’ancienne base de données ?</td><td>OUI</td></tr>
<tr class="row_odd"><td>Faut-il autoriser le protocole LDAPv2 ?</td><td>OUI</td></tr>
</tbody>
</table>
<p class="spip">Lors de l’installation du paquet <strong class="spip">slapd</strong>, le domaine à gérer (ex : mondomaine.net) et le mot de passe de l’administrateur sont demandés. Ce dernier est stocké directement dans la base LDAP.</p>

<p class="spip"><strong class="spip">Remarque</strong> : Après la configuration du paquet slapd, la base de données sera initialisée dans « /var/lib/ldap ». Si vous souhaitez changer la racine de votre arbre ldap, il est conseillé d’arrêter le serveur ldap, supprimer le dossier « /var/lib/ldap » et de re-configurer le paquet avec la commande :</p>

<p class="spip"><code class='spip_code' dir='ltr'># dpkg-reconfigure slapd</code></p>

<p class="spip">Ensuite, il faut ajouter la ligne suivante dans « /etc/ldap/slapd.conf » :</p>

<p class="spip"><code class='spip_code' dir='ltr'>include         /etc/ldap/schema/samba.schema</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Le paquet suivant permet de récupérer le schéma ldap pour samba :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># aptitude install samba-doc<br />
# cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/<br />
# gunzip /etc/ldap/schema/samba.schema.gz</code></div>
<p class="spip">Pour finir, il faut démarrer ou re-démarrer le serveur :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/slapd start</code></p>

<p class="spip">Une fois le serveur ldap initialisé et démarré la base doit contenir les deux entrées suivantes :</p>

<p class="spip"><code class='spip_code' dir='ltr'>- dc=mondomaine,dc=net</code></p>

<p class="spip"><code class='spip_code' dir='ltr'>-- cn=admin</code></p>

<p class="spip"><strong class="spip">Attention</strong> : si ce n’est pas le cas, il faut recommencer l’installation et purger la base avant de continuer. Vous pouvez le vérifier avec cette commande ou en passant par phpldapadmin :</p>

<p class="spip"><code class='spip_code' dir='ltr'>ldapsearch -x -b "dc=mondomaine,dc=net"</code></p>

<h2>Installation de phpldapadmin pour consulter et modifier l’annuaire LDAP</h2>
<p class="spip">Le paquet « <strong class="spip"> phpldapadmin </strong> » permet de consulter et de modifier la base de données LDAP en mode Web. Cette installation n’est pas obligatoire, mais phpldapadmin permet de consulter la base ldap et de vérifier que tout se passe correctement :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install phpldapadmin</code></p>

<p class="spip">Ensuite, l’accès se fait à cette adresse depuis un navigateur :</p>

<p class="spip"><code class='spip_code' dir='ltr'>http://VotreServeurLDAP/phpldapadmin/</code></p>

<h2>Installation de Samba</h2>
<p class="spip"><code class='spip_code' dir='ltr'># aptitude install samba-doc samba samba-client</code></p>

<p class="spip">Voici un exemple de fichier de configuration de Samba « <strong class="spip">/etc/samba/smb.conf</strong> » avec l’authentification LDAP et un simple partage :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code><br />
<br />
[global]<br />
<br />
   workgroup = VotreDomaine<br />
<br />
   dns proxy = no<br />
<br />
   log file = /var/log/samba/log.%m<br />
<br />
   max log size = 1000<br />
<br />
   syslog = 0<br />
<br />
   panic action = /usr/share/samba/panic-action %d<br />
<br />
<br />
<br />
   security = user<br />
<br />
   ldap passwd sync = Yes<br />
<br />
   passdb backend = ldapsam:ldap://127.0.0.1/<br />
<br />
   ldap admin dn = cn=admin,dc=votredomaine,dc=com<br />
<br />
   ldap suffix = dc=votredomaine,dc=com<br />
<br />
   ldap group suffix = ou=Groups<br />
<br />
   ldap user suffix = ou=Users<br />
<br />
   ldap machine suffix = ou=Computers<br />
<br />
   add user script = /usr/sbin/smbldap-useradd -m "%u"<br />
<br />
   ldap delete dn = Yes<br />
<br />
   delete user script = /usr/sbin/smbldap-userdel "%u"<br />
<br />
   add machine script = /usr/sbin/smbldap-useradd -w "%u"<br />
<br />
   add group script = /usr/sbin/smbldap-groupadd -p "%g"<br />
<br />
   add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"<br />
<br />
   delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"<br />
<br />
   set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"<br />
<br />
   logon path =<br />
<br />
   logon home =<br />
<br />
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192<br />
<br />
   case sensitive = No<br />
<br />
   default case = lower<br />
<br />
   preserve case = yes<br />
<br />
   short preserve case = Yes<br />
<br />
<br />
<br />
   socket options = TCP_NODELAY<br />
<br />
<br />
<br />
#======================= Share Definitions =======================<br />
<br />
[samba]<br />
<br />
        path = /Samba<br />
<br />
        browseable = yes<br />
<br />
        writable = yes<br />
<br />
        valid users = tony<br />
<br />
</code></div>
<h2>Connecter Samba et LDAP</h2>
<p class="spip">La commande suivante permet d’indiquer le mot de passe de l’admin de l’annuaire LDAP à Samba :</p>

<p class="spip"><code class='spip_code' dir='ltr'>smbpasswd -w votremotdepasse</code></p>

<p class="spip">En cas de modification de mot de passe, vous pouvez le changer avec cette commande :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>etch:/home/tony# smbpasswd<br />
New SMB password:<br />
Retype new SMB password: </code></div>
<p class="spip">Une fois que Samba connaît le mot de passe de l’admin LDAP, le redémarrage de Samba doit être instantané :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/init.d/samba restart </code></p>

<p class="spip">Lors du démarrage, la clé « sambaDomainName=VotreDomaineSamba » est automatiquement créée dans l’annuaire LDAP.</p>

<p class="spip">Pour information, ce mot de passe est stocké dans « <strong class="spip">/var/lib/samba/secrets.tdb</strong> »</p>

<h2>Installation et configuration de smbldap-tools</h2>
<p class="spip">Installation :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install smbldap-tools</code></p>

<p class="spip">Le paquet « <strong class="spip">smbldap-tools</strong> » n’étant pas directement opérationnel, il faut le configurer comme c’est indiqué dans le « README.Debian » :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>$ zless /usr/share/doc/smbldap-tools/README.Debian.gz<br />
Dans ce document, il est indiqué de mettre en place deux fichiers de configuration :<br />
# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf<br />
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf</code></div>
<p class="spip">Récupération du SID du serveur Samba actif :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># net getlocalsid<br />
SID for domain TTLINUX1 is: S-1-5-21-1823372447-3251260116-3214873863</code></div>
<p class="spip"><strong class="spip">Remarque 1 </strong> : Aucun message d’erreur ne doit apparaître avec la commande précédente.</p>

<p class="spip">Configuration des fichiers suivants dans « /etc/smbldap-tools/smbldap.conf » :</p>

<p class="spip"><strong class="spip">Remarque 2</strong> : Le paquet « <strong class="spip">smbldap-tools</strong> » est approprié pour récupérer les comptes d’un serveur Windows pour les intégrer dans LDAP. De son coté, le paquet « <strong class="spip"> migrationtools </strong> » est approprié pour récupérer les comptes d’une machine Linux (ex : un serveur NIS) pour les intégrer dans LDAP.</p>

<h3>Configuration de smbldap_bind.conf </h3>
<p class="spip">Indiquer dans le fichier « <strong class="spip">/etc/smbldap-tools/smbldap_bind.conf</strong> » le nom et le mot de passe de l’administrateur ldap.</p>

<p class="spip">ATTENTION : Dans ce fichier, le mot de passe est indiqué en clair. Il faut donc changer les droits de celui-ci par mesure de sécurité :</p>

<p class="spip"><code class='spip_code' dir='ltr'># chmod 600 /etc/smbldap-tools/smbldap_bind.conf</code></p>

<h3>Configuration de smbldap.conf</h3>
<p class="spip">Dans le fichier « <strong class="spip">/etc/smbldap-tools/smbldap.conf</strong> », il faut indiquer le bon domaine sur les lignes concernées et il faut également indiquer le SID trouvé précédemment :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>SID="S-1-5-21-1823372447-3251260116-3214873863"<br />
...<br />
suffix="dc=votredomaine,dc=net"<br />
...<br />
sambaUnixIdPooldn="sambaDomainName=VotreDomaineSamba,${suffix}"<br />
...<br />
mailDomain="votredomaine.net"</code></div>
<h3>Initialisation de la base de données LDAP</h3>
<p class="spip">La commande suivante permet d’initialiser la base de données LDAP :</p>

<p class="spip"><code class='spip_code' dir='ltr'># smbldap-populate </code></p>

<p class="spip"><strong class="spip">Attention</strong> : aucune erreur ne doit apparaître. En cas d’erreur, il est possible de corriger le problème de configuration et de relancer cette commande.</p>

<h3>Créer un nouvel utilisateur</h3>
<p class="spip">La commande suivante permet de créer un nouvel utilisateur (sur Testing) :</p>

<p class="spip"><code class='spip_code' dir='ltr'># smbldap-useradd -a -P -c "toto DUPONT" toto</code></p>

<p class="spip">Sous Sarge, le paramètre « -c » n’est pas reconnu :</p>

<p class="spip"><code class='spip_code' dir='ltr'># smbldap-useradd -a -P toto</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Après la création du compte et pour éviter que le mot de passe expire au bout de 3 semaines, il faut supprimer manuellement l’attribut « <strong class="spip"> SambaPwdMustChange </strong> » avec par exemple « <strong class="spip"> phpldapadmin </strong> ».</p>

<p class="spip">La commande suivante permet de vérifier que cet utilisateur arrive bien à se connecter aux partages samba :</p>

<p class="spip"><code class='spip_code' dir='ltr'># smbclient -L \\ServeurSamba -U toto  </code></p>

<p class="spip">La commande suivante permet de supprimer un utilisateur :</p>

<p class="spip"><code class='spip_code' dir='ltr'># smbldap-userdel toto</code></p>

<p class="spip"><strong class="spip">Remarque 1 : </strong>Vous trouverez plus d’informations sur les commandes précédentes dans les pages de man.</p>

<p class="spip"><strong class="spip">Remarque 2</strong> : Pour modifier les valeurs par défaut, il faut modifier le fichier « /etc/smbldap-tools/smbldap.conf ». Personnellement, j’ai commenté dans ce fichier, les lignes « <strong class="spip"> userSmbHome </strong> », « <strong class="spip"> userProfile </strong> » et « <strong class="spip"> userHomeDrive </strong> » et j’ai modifié la ligne « userScript="%U.cmd" » en « <strong class="spip">userScript="logon.bat"</strong> »</p>

<p class="spip"><strong class="spip">Remarque 3</strong> : Pour ajouter un nouvel attribut à l’utilisateur (adresse mail, numéro de téléphone,..) il faut passer par « <strong class="spip"> phpldapadmin </strong> »</p>

<h3>Changer le mot de passe d’un utilisateur</h3>
<p class="spip">La commande suivante permet de changer en même temps les différents mots de passe stockés dans la base LDAP :</p>

<p class="spip"><code class='spip_code' dir='ltr'># smbldap-passwd toto</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Il est possible de changer les mots de passe de manière individuelle avec « <strong class="spip"> phpldapadmin </strong> »</p>

<h3>Interroger la base de données LDAP </h3>
<p class="spip">La commande suivante permet d’interroger la base de données LDAP :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ ldapsearch -x -W -D "cn=admin,dc=votredomaine,dc=net" -h AdresseIPServeurLDAP</code></p>

<p class="spip">Mais le plus simple est encore de passer par « <strong class="spip"> phpldapadmin </strong> »</p>

<h2>Configuration du système NSS (Name Service Switch)</h2>
<p class="spip">NSS (ou nssiwtch) permet aux applications de savoir où sont stockées les bases de données systèmes pour pouvoir exploiter les informations qu’elles contiennent (Mot de passe, nom de la personne ou de l’ordinateur,..)</p>

<p class="spip">Paquet à installer :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install libnss-ldap</code></p>

<p class="spip"><strong class="spip">Remarque</strong> : Le paquet « <strong class="spip">libnss-ldap</strong> » permet de faire le lien entre le système « <strong class="spip"> nssiwtch </strong> » et le système LDAP. Pour cela il utilise le fichier de configuration « <strong class="spip">/etc/libnss-ldap</strong> » et il stocke le mot de passe du serveur ldap dans le fichier « <strong class="spip">/etc/libnss-ldap.secret</strong> ». Pour des raisons de sécurité, il est possible de ne pas stocker le mot de passe (en clair) dans « <strong class="spip">libnss-ldap.secret </strong> », mais dans ce cas, l’utilisateur root local ne pourra pas changer de mot de passe dans la base LDAP.</p>

<p class="spip">Lors de l’installation de ces paquets, il est nécessaire d’indiquer le domaine géré et le mot de passe administrateur de la base LDAP.</p>

<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Questions</strong></th><th scope='col'><strong class="spip">Réponses</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>Hôte du serveur LDAP </td><td>127.0.0.1 ou l’adresse IP du serveur LDAP</td></tr>
<tr class="row_odd"><td>Nom distinctif de la base</td><td>dc=mondaine,dc=net</td></tr>
<tr class="row_even"><td>LDAP version to use</td><td>3</td></tr>
<tr class="row_odd"><td>La base de données demande-t-elle une identification ?</td><td>Non</td></tr>
<tr class="row_even"><td>special LDAP privileges for root</td><td>Oui</td></tr>
<tr class="row_odd"><td>Le fichier de configuration doit-il être lisible et modifiable uniquement par son propriétaire ?</td><td>Non</td></tr>
<tr class="row_even"><td>LDAP account for root</td><td>cn=admin,dc=mondomaine,dc=net</td></tr>
<tr class="row_odd"><td>LDAP root account password</td><td>Pour info, ce mot de passe est stocké dans /etc/libnss-ldap.secret</td></tr>
<tr class="row_even"><td>Modifier nssiwtch manuellement</td><td>OK</td></tr>
<tr class="row_odd"><td>Faut-il créer une base de données locale pour l’administrateur ?</td><td>Oui</td></tr>
</tbody>
</table>
<p class="spip">Ensuite, dans le fichier « <strong class="spip">/etc/nsswitch.conf</strong> », il faut ajouter « <strong class="spip"> ldap </strong> » sur 3 lignes, ce qui donne :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>passwd:         compat  ldap<br />
group:          compat  ldap<br />
shadow:         compat  ldap</code></div>
<p class="spip"><strong class="spip">Remarque </strong> : Certains mémo placent « ldap » avant « compat » pour que la base ldap soit interrogée avant la base locale, mais cela ne change pas grand chose.</p>

<p class="spip">La commande suivante permet de vérifier que les utilisateurs de la base LDAP sont correctement ajoutés aux utilisateurs locaux :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># getent passwd<br />
Ces commandes permettent d'interroger les groupes et les machines<br />
# getent group <br />
# getent hosts</code></div>
<p class="spip">La commande suivante permet de vérifier qu’un utilisateur de la base LDAP est bien reconnu :</p>

<p class="spip"><code class='spip_code' dir='ltr'># id toto</code></p>

<p class="spip">Un bon test consiste également à affecter un utilisateur de la base LDAP sur un fichier</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># touch test<br />
# chown toto test<br />
# ls -la test<br />
-rw-r--r-- 1 toto Domain Users 0 2006-07-11 12:52 test</code></div>
<p class="spip"><strong class="spip">Remarque</strong> : Certains mémos indiquent que la configuration de <strong class="spip">nsswitch</strong> est suffisante pour gérer l’authentification et qu’il n’est pas nécessaire de passer par PAM. Personnellement, je n’ai pas compris comment. De plus, ces mémos indiquent que la commande suivante doit retourner le mot de passe crypté, mais dans mon cas, ça ne marche pas ce qui explique peut-être pourquoi l’authentification uniquement avec <strong class="spip">nsswitch</strong> ne fonctionne pas dans mon cas :</p>

<p class="spip"><code class='spip_code' dir='ltr'># getent shadow </code></p>

<h2>Configuration de PAM</h2>
<p class="spip"><strong class="spip">ATTENTION</strong> : PAM permet de configurer l’authentification sous Linux. Il n’y a rien à redémarrer après avoir modifié un fichier de configuration de PAM, mais toute erreur peut rendre impossible toute connexion même sous root. Il est donc fortement conseillé d’ouvrir une deuxième session sous root (ex : ALT+F1) avant de toucher à la configuration de PAM et de bien vérifier que les les connexions fonctionnent avant de se déconnecter.</p>

<p class="spip">Paquet à installer :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install libpam-ldap </code></p>

<p class="spip">Nous allons retrouver les mêmes questions que lors de l’installation du paquet « <strong class="spip">libnss-ldap</strong> »</p>

<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Questions</strong></th><th scope='col'><strong class="spip">Réponses</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>La base de données demande-t-elle une identification</td><td>Non</td></tr>
<tr class="row_odd"><td>Compte du superutilisateur</td><td>cn=admin,dc=mondomaine,dc=net</td></tr>
<tr class="row_even"><td>Mot de passe</td><td> </td></tr>
<tr class="row_odd"><td>Méthode de chiffrement pour les changements de mots de passe</td><td>crypt</td></tr>
</tbody>
</table>
<p class="spip"><strong class="spip">ATTENTION</strong> : Le mot de passe indiqué précédemment est stocké dans le fichier « <strong class="spip">pam_ldap.conf</strong> » mais ce fichier est lisible par tout le monde. Il faut donc changer ses droits pour des raisons de sécurité :</p>

<p class="spip"><code class='spip_code' dir='ltr'># chmod 600 /etc/pam_ldap.conf</code></p>

<p class="spip">Dans le dossier « <strong class="spip">/etc/pam.d</strong> »,’on retrouve un fichier de configuration pour chaque service (programme) ayant besoin d’une authentification. Il y a également des fichiers commençants par « common-* » qui sont inclus dans les autres fichiers à l’aide de la directive « @include-* ».</p>

<p class="spip">Voici un exemple de contenu valable pour « <strong class="spip">/etc/pam.d/ssh</strong> » ou « <strong class="spip">/etc/pam.d/kdm</strong> »</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>auth       required     pam_env.so<br />
auth       sufficient   pam_ldap.so<br />
auth       required     pam_unix_auth.so use_first_pass<br />
account    sufficient   pam_ldap.so<br />
account    required     pam_unix_acct.so<br />
password   required     pam_cracklib.so<br />
password   sufficient   pam_ldap.so<br />
password   required     pam_pwdb.so use_first_pass<br />
session    required     pam_unix_session.so<br />
session    optional     pam_mkhomedir.so</code></div>
<p class="spip"><strong class="spip">Remarque </strong> : Concernant la configuration de PAM avec LDAP, des exemples de configuration sont fournis par le paquet « libpam-ldap » dans le dossier « /<strong class="spip">usr/share/doc/libpam</strong>-<strong class="spip">ldap/examples/pam.d</strong> »</p>

<h2>Installation d’un cache local avec NSCD pour accélérer les requêtes</h2>
<p class="spip">Pour éviter que le poste client interroge le serveur LDAP en permanence, il est conseillé d’installer un cache local.</p>

<p class="spip">Paquet à installer :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install nscd</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Le ficher de configuration est « <strong class="spip">/etc/nscd.conf</strong> »</p>

<p class="spip"><strong class="spip">ATTENTION</strong> : Sans l’installation de NSCD, je n’ai pas pu faire fonctionner Thunderbird et OpenOffice.org (cf chapitre « Problèmes rencontrés »)</p>

<h2>Comment ajouter un nouvel utilisateur à un groupe </h2>
<p class="spip">Avec <strong class="spip">phpldapadmin </strong> :
<br /></p>
<li> Sélectionner le groupe
<br /><li> Regarder si l’entrée « <strong class="spip"> memberUID </strong> » est déjà créée
<br /><li> Si elle n’est pas créée il faut la créer en cliquant sur « <strong class="spip">Ajouter un nouvel attribut</strong> »
<br /><li> Si elle est créée, il faut cliquer sur « <strong class="spip">Ajouter une valeur</strong> »
<br /><li> Ensuite, il faut saisir le <strong class="spip">login</strong> de l’utilisateur
<h2>Autoriser un utilisateur du LDAP à ajouter des ordinateurs au domaine</h2>
<p class="spip">Par défaut, aucun utilisateur du LDAP n’est autorisé a ajouter ou supprimer des ordinateurs du domaine. En effet, il ne suffit pas d’ajouter un utilisateur au groupe « Administrateur » ou « Administrateur du domaine pour que ça fonctionne. Pour donner ces droits spéciaux à un utilisateur, il faut utiliser cette commande :</p>

<p class="spip"><code class='spip_code' dir='ltr'># net -U adminLDAP rpc rights grant 'VotreDomaine\VotreUser' SeMachineAccountPrivilege</code></p>

<p class="spip">Commentaires :
<br /></p>
<li> adminLDAP : Un des membres du groupe « Administrateur du domaine » du LDAP
<br /><li> VotreDomaine : Le nom de votre domaine contenant l’utilisateur à ajouter
<br /><li> VotreUser : Le login de l’utilisateur à ajouter
<h2>Sécurisation du système LDAP</h2>
<p class="spip">Pour sécuriser les échanges de mots de passe sur un réseau géré par LDAP, il faut activer le support de SSL dans LDAP. Pour le moment, je n’ai pas encore testé et activé ce système.</p>

<h2>Script ouverture de session</h2>
<p class="spip">Voici comment mettre en place les scripts d’ouvertures de sessions pour les clients Windows se connectant au contrôleur de domaine « Samba » :</p>

<p class="spip">Il faut commencer par créer le dossier devant contenir les scripts d’ouvertures de sessions :</p>

<p class="spip"><code class='spip_code' dir='ltr'># mkdir /home/netlogon</code></p>

<p class="spip">Il faut créer le fichier « <strong class="spip">logon.bat</strong> » et le placer dans le dossier « <strong class="spip">/home/netlogon </strong> ». Voici un exemple :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>net time \\cielinux1 /set /yes<br />
net use u: \\cielinux1\Utilisateurs</code></div>
<h2>Problèmes rencontrés</h2>
<h3>Problème avec Thunderbird et OpenOffice.org</h3>
<p class="spip">Sans l’installation de NSCD, je n’ai pas plus faire fonctionner Thunderbird, car j’obtenais systématiquement une erreur de segmentation. Alors qu’il fonctionnait très bien avec un utilisateur local non créé dans la base LDAP :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>$ /opt/thunderbird/thunderbird<br />
/opt/thunderbird/run-mozilla.sh: line 131:  5029 Erreur de segmentation  "$prog" ${1+"$@"}</code></div>
<p class="spip">J’obtenais également un blocage de OpenOffice.org dés que celui-ci avait besoin de Java. Alors qu’il fonctionnait très bien avec un utilisateur local non créé dans la base LDAP.</p>

<p class="spip">Il est donc important d’installer le cache local « <strong class="spip">nscd</strong> » pour faire fonctionner OpenOffice.org et Thunderbird</p>

<h3>Problème de connexion en root quand le serveur LDAP n’est pas joignable</h3>
<p class="spip">Quand le serveur LDAP n’est pas joignable, et avec une configuration par défaut, il faut attendre environ 5mn (exactement (1+2+4+8+16+32+64)x2=254s) pour que le mot de passe root soit accepté. En effet, le système recherche le mot de passe sur le serveur LDAP et au bout de nombreuses tentatives finit par rechercher en local.</p>

<p class="spip">Pour info, voici un extrait des messages de « <strong class="spip">/var/log/auth.log</strong> » :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>Jul 10 12:25:04 pgtest su[5052]: nss_ldap: could not connect to any LDAP server as<br />
 cn=admin,dc=tetras,dc=net - Can't contact LDAP server<br />
Jul 10 12:25:04 pgtest su[5052]: nss_ldap: failed to bind to LDAP server ldap://192.0.0.3: Can't<br />
 contact LDAP server<br />
Jul 10 12:25:04 pgtest su[5052]: nss_ldap: reconnecting to LDAP server (sleeping 64 seconds)...</code></div>
<p class="spip">Pour éviter cette attente, et pour un ordinateur portable, il est conseillé de modifier la ligne suivante dans « <strong class="spip">/etc/libnss-ldap.conf</strong> » : 
<br /></p>
<li> Mettre « <strong class="spip">bind_policy soft</strong> » en dessous de « <strong class="spip">#bind_policy hard</strong> »
<h3>Problème de déverrouillage avec des comptes LDAP </h3>
<p class="spip">Avec les utilisateurs LDAP, il était impossible de les déconnecter. J’avais le message d’erreur suivant :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>Jul 10 17:01:13 pgtest kcheckpass: (pam_unix) authentication failure; logname= uid=1000 euid=0<br />
 tty=:0 ruser= rhost=  user=tony<br />
Jul 10 17:01:13 pgtest kcheckpass[11077]: Authentication failure for tony (invoked by uid 1000)</code></div>
<p class="spip">J’ai essayé de paramétrer sans succès le fichier « <strong class="spip">/etc/pam.d/kcheckpass</strong> ».</p>

<p class="spip">Mais contrairement à ce que le message laisse penser, il ne faut pas paramétrer le fichier  « <strong class="spip">/etc/pam.d/kcheckpass</strong> », mais le fichier  « <strong class="spip">/etc/pam.d/kscreensaver</strong> ».</p>

<h3>Problème avec les ACL et Konqueror</h3>
<p class="spip">Si les ACL sont activées, elles fonctionnement parfaitement même avec les utilisateurs de la base LDAP .</p>

<p class="spip">Cependant, j’ai rencontré le bug suivant en modifiant les ACL avec <strong class="spip">Konqueror </strong> :
<br /></p>
<li> Clic droit sur un fichier ou un dossier et « <strong class="spip"> Propriétés </strong> » pour modifier ses ACL
<br /><li> Onglet « <strong class="spip">Droits d’accès</strong> » et bouton « <strong class="spip">Droits d’accès avancés</strong> »
<br /><li> La modification des ACL fonctionne parfaitement et est correctement réenregistrée si on fait des modifications dans les droits. 
<br /><li> Cependant, si on ne fait aucune modification, le champ mask, passe de « rwx » à « --- »
<h3>Problème avec les profils itinérants</h3>
<p class="spip">Par défaut le système samba-ldap est configuré pour gérer les profils itinérants. Si vous voulez désactiver cette fonctionnalité pour les utilisateurs, il faut supprimer l’entrée « <strong class="spip">sambaProfilePath</strong> » en utilisant par exemple « <strong class="spip"> phpldapadmin </strong> »</p>

<h3>Problème avec les profils itinérants</h3>
<p class="spip">Par défaut, samba tente de fournir aux clients Windows un profil itinérant.</p>

<p class="spip">Pour éviter ce problème, il faut mettre ces deux lignes dans « <strong class="spip">smb.conf</strong> »</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>logon path =<br />
logon home =</code></div>
<h3>Problème avec le script de démarrage</h3>
<p class="spip">Lors de la création d’un nouvel utilisateur, je n’arrive pas à forcer par défaut le nom du script de démarrage. J’aimerais mettre par défaut « l<strong class="spip">ogon.bat</strong> » sur l’attribut « <strong class="spip"> sambaLogonScript </strong> »</p>

<h3>Problème pour rejoindre le domaine </h3>
<p class="spip">Je n’arrivais pas à rejoindre le domaine, car le pare feu sur le serveur était mal configuré.</p>

<h3>Problème pour rejoindre le domaine à cause du cache Wins</h3>
<p class="spip">Après avoir changé l’adresse IP du serveur, j’ai eu un problème dans le fonctionnement de Wins avec NMBD. Il continuait à vouloir utiliser l’ancienne adresse « 192.0.0.209 » alors qu’il fallait utiliser la nouvelle « 10.2.2.2 »</p>

<p class="spip">A cause de ce problème, je n’arrivais plus à configurer des postes sous Win 2000 ou Won NT pour les faire rejoindre le domaine.</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>[2006/06/20 11:59:17, 0] nmbd/nmbd_browsesync.c:domain_master_node_status_fail(250)<br />
Jun 20 11:59:17 cielinux1 nmbd[6223]:   domain_master_node_status_fail:<br />
Jun 20 11:59:17 cielinux1 nmbd[6223]:   Doing a node status request to the domain master browser<br />
Jun 20 11:59:17 cielinux1 nmbd[6223]:   for workgroup ELOYES at IP 192.0.0.209 failed.<br />
Jun 20 11:59:17 cielinux1 nmbd[6223]:   Cannot sync browser lists.<br />
Jun 20 12:03:43 cielinux1 nmbd[6223]: [2006/06/20 12:03:43, 0]<br />
nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(327)<br />
Jun 20 12:03:43 cielinux1 nmbd[6223]:   become_domain_master_browser_wins:<br />
Jun 20 12:03:43 cielinux1 nmbd[6223]:   Attempting to become domain master browser on workgroup<br />
ELOYES, subnet UNICAST_SUBNET.<br />
Jun 20 12:03:43 cielinux1 nmbd[6223]: [2006/06/20 12:03:43, 0]<br />
nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(341)<br />
Jun 20 12:03:43 cielinux1 nmbd[6223]:   become_domain_master_browser_wins: querying WINS server<br />
from IP 10.2.2.2 for domain<br />
master browser name ELOYES<1b> on workgroup ELOYES</code></div>
<p class="spip">Pour régler ce problème, j’ai supprimé le fichier « <strong class="spip">/var/lib/samba/wins.dat</strong> » qui contenait en cache l’ancienne adresse IP.</p>

<h3>Problème de gestion de profils suite à la mise en place du nouveau domaine</h3>
<p class="spip">Pour chaque ordinateur et chaque profil devant se connecter au nouveau domaine, j’ai du recopier les profils. Voici les opérations à faire : 
<br /></p>
<li> Renommer le profil
<br /><li> Se connecter sur ce profil
<br /><li> Se connecter en admin et recopier les données du profil renommé sur le nouveau profil
<br /><li> Il faut également revoir la gestion des utilisateurs pour mettre les utilisateurs du nouveau domaine
<h3>Création manuelle des ordinateurs pour Windows NT</h3>
<p class="spip">Pour les postes sous Windows NT, il est nécessaire de créer manuellement les ordinateurs dans LDAP pour pouvoir les joindre au domaine</p>

<h3>Le compte expire au bout de 3 semaines</h3>
<p class="spip">Lors de la création d’un nouveau compte avec la commande « <strong class="spip">smbldap-useradd</strong> », l’attribut « <strong class="spip"> SambaPwdMustChange </strong> » est ajouté au compte. Cet attribut indique qu’il faut changer le mot de passe avant le temps indiqué (3 semaines). J’ai donc supprimé cet attribut manuellement avec « <strong class="spip"> phpldapadmin </strong> » pour ne pas être obligé de changer de mot de passe.</p>

<h3>Les droits des fichiers par défaut sont fixés à 755 au lieu de 770 avec ssh/FreeNX</h3>
<p class="spip">Avec un accès Windows / Samba, le masque de création est fixé dans le fichier de configuration de Samba, mais avec un accès SSH/Freenx, il est fixé dans le dossier « /etc/profile ».</p>

<p class="spip">Il faut donc mettre « <strong class="spip">umask 007</strong> » au lieu de « umask 022 » dans « <strong class="spip">/etc/profile</strong> »</p>

<h2>Autres sources de documentations :</h2>
<p class="spip">Ces documents m’ont beaucoup aidés pour installer mon premier serveur :
<br /></p>
<li> <a href="http://damstux.free.fr/wiki/index.php?title=PDC_Samba_et_LDAP" class="spip_out">http://damstux.free.fr/wiki/index.php ?title=PDC_Samba_et_LDAP</a>
<br /><li> <a href="http://damstux.free.fr/wiki/index.php?title=Authentification_LDAP" class="spip_out">http://damstux.free.fr/wiki/index.php ?title=Authentification_LDAP</a>
<h2>Historique des modifications</h2>
<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Version</strong></th><th scope='col'><strong class="spip">Date</strong></th><th scope='col'><strong class="spip">Commentaire</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>0.1</td><td>19/06/06</td><td>Création par Tony GALMICHE</td></tr>
<tr class="row_odd"><td>0.2</td><td>28/06/06</td><td>Mise à jour suite à installation TTLINUX1</td></tr>
<tr class="row_even"><td>0.3</td><td>13/07/06</td><td>Mise à jour</td></tr>
<tr class="row_odd"><td>0.4</td><td>23/08/06</td><td>Mise à jour</td></tr>
<tr class="row_even"><td>0.5</td><td>01/12/06</td><td>Ajout « Changer le mot de passe d’un utilisateur »</td></tr>
<tr class="row_odd"><td>0.6</td><td>26/08/07</td><td>Mise à jour suite à installation serveurs Freedom et mise en ligne</td></tr>
<tr class="row_even"><td>0.7</td><td>10/09/08</td><td>Mise à jour</td></tr>
</tbody>
</table>