 contrôleur de domaine avec samba et ldap sous debian etch but de ce document 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 j ai testé ce mémo sur une debian etch installation d openldap  aptitude install slapd ldaputils questions posées lors de l installation de slapd questions réponses nom de votre organisation mondomainenet mot de passe de l administrateur monmotdepasse module de base de données à utiliser bdb fautil supprimer la base de données à la purge du paquet non fautil déplacer l ancienne base de données oui fautil autoriser le protocole ldapv2 oui lors de l installation du paquet slapd  le domaine à gérer ex mondomainenet et le mot de passe de l administrateur sont demandés ce dernier est stocké directement dans la base ldap remarque  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 reconfigurer le paquet avec la commande dpkgreconfigure slapd ensuite il faut ajouter la ligne suivante dans etc ldap slapdconf include etc ldap schema sambaschema remarque  le paquet suivant permet de récupérer le schéma ldap pour samba aptitude install sambadoc cp usr share doc sambadoc examples ldap sambaschemagz etc ldap schema gunzip etc ldap schema sambaschemagz pour finir il faut démarrer ou redémarrer le serveur etc initd slapd start une fois le serveur ldap initialisé et démarré la base doit contenir les deux entrées suivantes dc mondomaine dc net cn admin attention  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 ldapsearch x b dc mondomaine dc net  installation de phpldapadmin pour consulter et modifier l annuaire ldap le paquet  phpldapadmin  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 aptitude install phpldapadmin ensuite l accès se fait à cette adresse depuis un navigateur http votreserveurldap phpldapadmin  installation de samba  aptitude install sambadoc samba sambaclient voici un exemple de fichier de configuration de samba   etc samba smbconf  avec l authentification ldap et un simple partage global workgroup votredomaine dns proxy no log file var log samba log m max log size 1000 syslog 0 panic action usr share samba panicaction d security user ldap passwd sync yes passdb backend ldapsam ldap 127001 ldap admin dn cn admin dc votredomaine dc com ldap suffix dc votredomaine dc com ldap group suffix ou groups ldap user suffix ou users ldap machine suffix ou computers add user script usr sbin smbldapuseradd m u ldap delete dn yes delete user script usr sbin smbldapuserdel u add machine script usr sbin smbldapuseradd w u add group script usr sbin smbldapgroupadd p g add user to group script usr sbin smbldapgroupmod m u g delete user from group script usr sbin smbldapgroupmod x u g set primary group script usr sbin smbldapusermod g g u logon path logon home socket options tcpnodelay sorcvbuf 8192 sosndbuf 8192 case sensitive no default case lower preserve case yes short preserve case yes socket options tcpnodelay share definitions samba path samba browseable yes writable yes valid users tony connecter samba et ldap la commande suivante permet d indiquer le mot de passe de l admin de l annuaire ldap à samba smbpasswd w votremotdepasse en cas de modification de mot de passe vous pouvez le changer avec cette commande etch home tony smbpasswd new smb password retype new smb password une fois que samba connaît le mot de passe de l admin ldap le redémarrage de samba doit être instantané etc initd samba restart lors du démarrage la clé sambadomainname votredomainesamba est automatiquement créée dans l annuaire ldap pour information ce mot de passe est stocké dans   var lib samba secretstdb   installation et configuration de smbldaptools installation aptitude install smbldaptools le paquet  smbldaptools  n étant pas directement opérationnel il faut le configurer comme c est indiqué dans le readmedebian zless usr share doc smbldaptools readmedebiangz dans ce document il est indiqué de mettre en place deux fichiers de configuration zcat usr share doc smbldaptools examples smbldapconfgz etc smbldaptools smbldapconf cp usr share doc smbldaptools examples smbldapbindconf etc smbldaptools smbldapbindconf récupération du sid du serveur samba actif net getlocalsid sid for domain ttlinux1 is s1521182337244732512601163214873863 remarque 1  aucun message d erreur ne doit apparaître avec la commande précédente configuration des fichiers suivants dans etc smbldaptools smbldapconf  remarque 2  le paquet  smbldaptools  est approprié pour récupérer les comptes d un serveur windows pour les intégrer dans ldap de son coté le paquet  migrationtools  est approprié pour récupérer les comptes d une machine linux ex un serveur nis pour les intégrer dans ldap configuration de smbldapbindconf indiquer dans le fichier   etc smbldaptools smbldapbindconf  le nom et le mot de passe de l administrateur ldap attention dans ce fichier le mot de passe est indiqué en clair il faut donc changer les droits de celuici par mesure de sécurité chmod 600 etc smbldaptools smbldapbindconf configuration de smbldapconf dans le fichier   etc smbldaptools smbldapconf  il faut indiquer le bon domaine sur les lignes concernées et il faut également indiquer le sid trouvé précédemment sid s1521182337244732512601163214873863 suffix dc votredomaine dc net sambaunixidpooldn sambadomainname votredomainesamba suffix maildomain votredomainenet  initialisation de la base de données ldap la commande suivante permet d initialiser la base de données ldap smbldappopulate attention  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 créer un nouvel utilisateur la commande suivante permet de créer un nouvel utilisateur sur testing smbldapuseradd a p c toto dupont toto sous sarge le paramètre c n est pas reconnu smbldapuseradd a p toto remarque  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  sambapwdmustchange  avec par exemple  phpldapadmin  la commande suivante permet de vérifier que cet utilisateur arrive bien à se connecter aux partages samba smbclient l serveursamba u toto la commande suivante permet de supprimer un utilisateur smbldapuserdel toto remarque 1  vous trouverez plus d informations sur les commandes précédentes dans les pages de man remarque 2  pour modifier les valeurs par défaut il faut modifier le fichier etc smbldaptools smbldapconf personnellement j ai commenté dans ce fichier les lignes  usersmbhome   userprofile  et  userhomedrive  et j ai modifié la ligne userscript ucmd en  userscript logonbat    remarque 3  pour ajouter un nouvel attribut à l utilisateur adresse mail numéro de téléphone il faut passer par  phpldapadmin   changer le mot de passe d un utilisateur la commande suivante permet de changer en même temps les différents mots de passe stockés dans la base ldap smbldappasswd toto remarque  il est possible de changer les mots de passe de manière individuelle avec  phpldapadmin   interroger la base de données ldap la commande suivante permet d interroger la base de données ldap ldapsearch x w d cn admin dc votredomaine dc net h adresseipserveurldap mais le plus simple est encore de passer par  phpldapadmin   configuration du système nss name service switch  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 paquet à installer aptitude install libnssldap remarque  le paquet  libnssldap  permet de faire le lien entre le système  nssiwtch  et le système ldap pour cela il utilise le fichier de configuration   etc libnssldap  et il stocke le mot de passe du serveur ldap dans le fichier   etc libnssldapsecret  pour des raisons de sécurité il est possible de ne pas stocker le mot de passe en clair dans  libnssldapsecret  mais dans ce cas l utilisateur root local ne pourra pas changer de mot de passe dans la base ldap 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 questions réponses hôte du serveur ldap 127001 ou l adresse ip du serveur ldap nom distinctif de la base dc mondaine dc net ldap version to use 3 la base de données demandetelle une identification non special ldap privileges for root oui le fichier de configuration doitil être lisible et modifiable uniquement par son propriétaire non ldap account for root cn admin dc mondomaine dc net ldap root account password pour info ce mot de passe est stocké dans etc libnssldapsecret modifier nssiwtch manuellement ok fautil créer une base de données locale pour l administrateur oui ensuite dans le fichier   etc nsswitchconf  il faut ajouter  ldap  sur 3 lignes ce qui donne passwd compat ldap group compat ldap shadow compat ldap remarque  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 la commande suivante permet de vérifier que les utilisateurs de la base ldap sont correctement ajoutés aux utilisateurs locaux getent passwd ces commandes permettent d interroger les groupes et les machines getent group getent hosts la commande suivante permet de vérifier qu un utilisateur de la base ldap est bien reconnu id toto un bon test consiste également à affecter un utilisateur de la base ldap sur un fichier touch test chown toto test ls la test rwrr 1 toto domain users 0 20060711 1252 test remarque  certains mémos indiquent que la configuration de nsswitch 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 nsswitch ne fonctionne pas dans mon cas getent shadow configuration de pam attention  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 paquet à installer aptitude install libpamldap nous allons retrouver les mêmes questions que lors de l installation du paquet  libnssldap   questions réponses la base de données demandetelle une identification non compte du superutilisateur cn admin dc mondomaine dc net mot de passe méthode de chiffrement pour les changements de mots de passe crypt attention  le mot de passe indiqué précédemment est stocké dans le fichier  pamldapconf  mais ce fichier est lisible par tout le monde il faut donc changer ses droits pour des raisons de sécurité chmod 600 etc pamldapconf dans le dossier   etc pamd  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 voici un exemple de contenu valable pour   etc pamd ssh  ou   etc pamd kdm  auth required pamenvso auth sufficient pamldapso auth required pamunixauthso usefirstpass account sufficient pamldapso account required pamunixacctso password required pamcracklibso password sufficient pamldapso password required pampwdbso usefirstpass session required pamunixsessionso session optional pammkhomedirso remarque  concernant la configuration de pam avec ldap des exemples de configuration sont fournis par le paquet libpamldap dans le dossier  usr share doc libpam  ldap examples pamd   installation d un cache local avec nscd pour accélérer les requêtes pour éviter que le poste client interroge le serveur ldap en permanence il est conseillé d installer un cache local paquet à installer aptitude install nscd remarque  le ficher de configuration est   etc nscdconf   attention  sans l installation de nscd je n ai pas pu faire fonctionner thunderbird et openofficeorg cf chapitre problèmes rencontrés  comment ajouter un nouvel utilisateur à un groupe avec phpldapadmin  sélectionner le groupe regarder si l entrée  memberuid  est déjà créée si elle n est pas créée il faut la créer en cliquant sur  ajouter un nouvel attribut  si elle est créée il faut cliquer sur  ajouter une valeur  ensuite il faut saisir le login de l utilisateur autoriser un utilisateur du ldap à ajouter des ordinateurs au domaine 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 net u adminldap rpc rights grant votredomaine votreuser semachineaccountprivilege commentaires adminldap un des membres du groupe administrateur du domaine du ldap votredomaine le nom de votre domaine contenant l utilisateur à ajouter votreuser le login de l utilisateur à ajouter sécurisation du système ldap 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 script ouverture de session voici comment mettre en place les scripts d ouvertures de sessions pour les clients windows se connectant au contrôleur de domaine samba il faut commencer par créer le dossier devant contenir les scripts d ouvertures de sessions mkdir home netlogon il faut créer le fichier  logonbat  et le placer dans le dossier   home netlogon  voici un exemple net time cielinux1 set yes net use u cielinux1 utilisateurs problèmes rencontrés problème avec thunderbird et openofficeorg 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 opt thunderbird thunderbird opt thunderbird runmozillash line 131 5029 erreur de segmentation prog 1 j obtenais également un blocage de openofficeorg dés que celuici avait besoin de java alors qu il fonctionnait très bien avec un utilisateur local non créé dans la base ldap il est donc important d installer le cache local  nscd  pour faire fonctionner openofficeorg et thunderbird problème de connexion en root quand le serveur ldap n est pas joignable 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 pour info voici un extrait des messages de   var log authlog  jul 10 122504 pgtest su 5052 nssldap could not connect to any ldap server as cn admin dc tetras dc net can t contact ldap server jul 10 122504 pgtest su 5052 nssldap failed to bind to ldap server ldap 192003 can t contact ldap server jul 10 122504 pgtest su 5052 nssldap reconnecting to ldap server sleeping 64 seconds pour éviter cette attente et pour un ordinateur portable il est conseillé de modifier la ligne suivante dans   etc libnssldapconf  mettre  bindpolicy soft  en dessous de   bindpolicy hard   problème de déverrouillage avec des comptes ldap avec les utilisateurs ldap il était impossible de les déconnecter j avais le message d erreur suivant jul 10 170113 pgtest kcheckpass pamunix authentication failure logname uid 1000 euid 0 tty 0 ruser rhost user tony jul 10 170113 pgtest kcheckpass 11077 authentication failure for tony invoked by uid 1000 j ai essayé de paramétrer sans succès le fichier   etc pamd kcheckpass  mais contrairement à ce que le message laisse penser il ne faut pas paramétrer le fichier   etc pamd kcheckpass  mais le fichier   etc pamd kscreensaver   problème avec les acl et konqueror si les acl sont activées elles fonctionnement parfaitement même avec les utilisateurs de la base ldap cependant j ai rencontré le bug suivant en modifiant les acl avec konqueror  clic droit sur un fichier ou un dossier et  propriétés  pour modifier ses acl onglet  droits d accès  et bouton  droits d accès avancés  la modification des acl fonctionne parfaitement et est correctement réenregistrée si on fait des modifications dans les droits cependant si on ne fait aucune modification le champ mask passe de rwx à  problème avec les profils itinérants par défaut le système sambaldap 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  sambaprofilepath  en utilisant par exemple  phpldapadmin   problème avec les profils itinérants par défaut samba tente de fournir aux clients windows un profil itinérant pour éviter ce problème il faut mettre ces deux lignes dans  smbconf  logon path logon home  problème avec le script de démarrage 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 ogonbat  sur l attribut  sambalogonscript   problème pour rejoindre le domaine je n arrivais pas à rejoindre le domaine car le pare feu sur le serveur était mal configuré problème pour rejoindre le domaine à cause du cache wins 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 19200209 alors qu il fallait utiliser la nouvelle 10222 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 20060620 115917 0 nmbd nmbdbrowsesyncc domainmasternodestatusfail 250 jun 20 115917 cielinux1 nmbd 6223 domainmasternodestatusfail jun 20 115917 cielinux1 nmbd 6223 doing a node status request to the domain master browser jun 20 115917 cielinux1 nmbd 6223 for workgroup eloyes at ip 19200209 failed jun 20 115917 cielinux1 nmbd 6223 cannot sync browser lists jun 20 120343 cielinux1 nmbd 6223 20060620 120343 0 nmbd nmbdbecomedmbc becomedomainmasterbrowserwins 327 jun 20 120343 cielinux1 nmbd 6223 becomedomainmasterbrowserwins jun 20 120343 cielinux1 nmbd 6223 attempting to become domain master browser on workgroup eloyes subnet unicastsubnet jun 20 120343 cielinux1 nmbd 6223 20060620 120343 0 nmbd nmbdbecomedmbc becomedomainmasterbrowserwins 341 jun 20 120343 cielinux1 nmbd 6223 becomedomainmasterbrowserwins querying wins server from ip 10222 for domain master browser name eloyes 1b on workgroup eloyes pour régler ce problème j ai supprimé le fichier   var lib samba winsdat  qui contenait en cache l ancienne adresse ip problème de gestion de profils suite à la mise en place du nouveau domaine pour chaque ordinateur et chaque profil devant se connecter au nouveau domaine j ai du recopier les profils voici les opérations à faire renommer le profil se connecter sur ce profil se connecter en admin et recopier les données du profil renommé sur le nouveau profil il faut également revoir la gestion des utilisateurs pour mettre les utilisateurs du nouveau domaine création manuelle des ordinateurs pour windows nt pour les postes sous windows nt il est nécessaire de créer manuellement les ordinateurs dans ldap pour pouvoir les joindre au domaine le compte expire au bout de 3 semaines lors de la création d un nouveau compte avec la commande  smbldapuseradd  l attribut  sambapwdmustchange  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  phpldapadmin  pour ne pas être obligé de changer de mot de passe les droits des fichiers par défaut sont fixés à 755 au lieu de 770 avec ssh freenx 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 il faut donc mettre  umask 007  au lieu de umask 022 dans   etc profile   autres sources de documentations  ces documents m ont beaucoup aidés pour installer mon premier serveur  http damstuxfreefr wiki indexphp title pdcsambaetldap   http damstuxfreefr wiki indexphp title authentificationldap historique des modifications version date commentaire 01 190606 création par tony galmiche 02 280606 mise à jour suite à installation ttlinux1 03 130706 mise à jour 04 230806 mise à jour 05 011206 ajout changer le mot de passe d un utilisateur 06 260807 mise à jour suite à installation serveurs freedom et mise en ligne 07 100908 mise à jour  contrôleur de domaine avec samba et ldap sous debian etch on utilise lam  http lamsourceforgenet   pour la gestion des comptes machines une fois configuré correctement c est le bonheur  contrôleur de domaine avec samba et ldap sous debian etch merci pour l info je ne connaissais pas je vais installer et tester cette interface dès demain  contrôleur de domaine avec samba et ldap sous debian etch comme prévu j ai testé ce matin et j adopte immédiatement je ferai certainement mais plus tard un article complémentaire sur lam contrôleur de domaine avec samba et ldap sous debian etch contrôleur de domaine avec samba et ldap sous debian etch bonjours en suivant trait pour trait le tuto pour debian tous ce passe bien jusqu a ce que j arrive à smbpasswd après avoir tappé la commande ce message d erreur vin s inscrire fetchldappw neither ldap secret retrieved ldapconnectsysteme failed to retrieve password from secretstdb connection to ldap server failed for the 1 try je ne sais trop quoi faire s ilvousplais si quelqu un peu m aider d avance merci contrôleur de domaine avec samba et ldap sous debian etch a priori il faut utiliser cette commande smbpasswd w motdepasseldap et pas seulement smbpasswd contrôleur de domaine avec samba et ldap sous debian etch bonjour je suis en train de suivre le tuto et je rencontre le probleme suivant lors récupération du sid du serveur samba actif 20080830 113557 0 lib smbldaputilc smbldapsearchdomaininfo 249 smbldapsearchdomaininfo adding domain into for serveur failed with ntstatusunsuccessful sid for domain serveur is s152117166725234486143762778465165 apparemment ceci peut arriver quand l annuaire maître est sur le lcs mais je n arrive pas a résoudre le problème merci d avance pour votre aide contrôleur de domaine avec samba et ldap sous debian etch  sécurité  