PDC Samba LDAP
hazem.nasri | 17 décembre 2007Prérequis et Conseils
Ce tutoriel fonctionne sur les distributions suivantes:
* Debian SID
* Debian Sarge
* Debian Etch
* Ubuntu ( Et ses dérivées )
* …….
Ce guide a été fait avec une Debian SID.
Afin que ce guide corresponde totalement à votre environnement, je vous conseille de modifier le niveau de priorité de Debconf. Sur la nouvelle debian Etch et sur Ubuntu le niveau de Debconf est à “Elevé”. Ce qui réduit sensiblement le nombre de questions qui vous ai posé lors de l’installation d’un paquet. On va donc changer le niveau à “Intermédiaire”.
dpkg-reconfigure debconf
Choisissez “Dialogue” puis “Intermédiaire”
Je vous conseille grandement d’utiliser le même mot de passe que celui de votre utilisateur root à chaque fois q’on vous demande un mot de passe. Cela évitera les erreurs !!
Le contrôleur de domaine doit impérativement avoir une adresse IP statique, si vous changez d’adresse IP en cours de route vous risquez de ne plus pouvoir joindre le domaine.
Dans notre cas le serveur samba et le serveur OpenLDAP se trouvent sur le même PC.
Installation du serveur OpenLDAP
Installation
Le paquet slapd contient la partie serveur d’openLDAP :
aptitude install slapd db4.2-util ldap-utils
Debconf nous pose plusieurs questions :
* Le nom du domaine : c’est celui de LDAP (Totalement diférent du domaine Samba):
Si vous mettez domaine.local vous aurez donc dc=domaine,dc=local (rappelez-vous en !!)
* Nom de votre organisation: peu important.
domaine.local
* Mot de passe de l’administrateur :
C’est ce mot de passe que vous utiliserez pour vous connecter, rappelez vous en !!
* Module de base de données à utiliser :
BDB
* Faut-il supprimer la base de données à la purge du paquet ?
NON
* Faut-il déplacer l’ancienne base de données ?
NON
* Faut-il autoriser le protocole LDAPv2 ?
NON
Schéma Samba
LDAP fonctionne avec des schémas, par défaut 4 schémas sont déjà présents, pour utiliser samba avec LDAP il faut le schéma approprié. Celui se trouve dans le paquet SAMBA-DOC (14mo !!)
* Installation:
aptitude install samba-doc
* On copie le schéma que l’on place dans le répertoire dans le répertoire des schémas de LDAP:
gunzip -c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
Modification du fichier slapd.conf
Il reste maintenant à éditer le fichier de configuration du serveur OpenLDAP
nano /etc/ldap/slapd.conf
* On déclare le schéma de samba
include /etc/ldap/schema/samba.schema
Juste en dessous des autres déclarations;
* Création d’un mot de passe crypté:
Il faut indiquer le mot de passe de admin dans le fichier de configuration, pour des raisons de sécurité on évitera de le mettre en clair, on va le crypter avec la commande slappasswd
shuttle:/home/damien# slappasswd
New password:
Re-enter new password:
{SSHA}jso956sZB1+kViJ9z25tmf2M6iqrpMVV
Chercher ces lignes dans le fichier slapd.conf
# The base of your directory in database #1
suffix “dc=domaine,dc=local”
Rajoutez juste en dessous:
rootdn “cn=admin,dc=domaine,dc=local”
rootpw {SSHA}jso956sZiopljlkjlkjkljf2M6iqrpMVV
rootpw correspond au résultat de la commande slappaswd
Enfin on relance le serveur OpenLDAP:
/etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: running BDB recovery, slapd.
Voici mon fichier de configuation de slapd.conf
Installation du serveur SAMBA
Installation
On installe le paquet samba (le serveur) et des outils pour le client:
aptitude install samba smbclient smbfs
Répondez à debconf en laissant tout par défaut, de toute façon on fera notre propre fichier de configuration.
Modification du fichier smb.conf
Le fichier de configuration du serveur SAMBA est : /etc/samba/smb.conf
Supprimez tout le contenu et copiez toutes ces lignes:
[global]
### A changer: pas d’espace, ni point === >
workgroup = domaine
### A changer, mettre le meme nom que le nom de votre machine === >
netbios name = mamachine
server string = Samba-LDAP PDC Server
domain master = Yes
local master = Yes
domain logons = Yes
os level = 40
#passwd program = /usr/sbin/smbldap-passwd ?u %u
ldap passwd sync = Yes
passdb backend = ldapsam:ldap://127.0.0.1/
### A changer === >
ldap admin dn = cn=admin,dc=domaine,dc=local
### A changer === >
ldap suffix = dc=domaine,dc=local
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Machines
add user script = /usr/sbin/smbldap-useradd -m “%u”
ldap delete dn = Yes
delete user script = /usr/sbin/smbldap-userdel “%u”
add machine script = /usr/sbin/smbldap-useradd -w “%u”
add group script = /usr/sbin/smbldap-groupadd -p “%g”
#delete group script = /usr/sbin/smbldap-groupdel “%g”
add user to group script = /usr/sbin/smbldap-groupmod -m “%u” “%g”
delete user from group script = /usr/sbin/smbldap-groupmod -x “%u” “%g”
set primary group script = /usr/sbin/smbldap-usermod -g “%g” “%u”
logon path = \\%L\profile\%U
logon drive = P:
logon home = \\%L\%U
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
case sensitive = No
default case = lower
preserve case = yes
short preserve case = Yes
#character set = iso8859-1
#domain admin group = @admin
dns proxy = No
wins support = Yes
### A changer si vous n’utilisez pas ce réseau === >
hosts allow = 192.168.0. 127.
winbind use default domain = Yes
nt acl support = Yes
msdfs root = Yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
### FIN DE LA PARTIE GLOBALE #####
#### LES PARTAGES #####
[netlogon]
path = /home/netlogon
writable = No
browseable = No
write list = Administrateur
#
[profile]
path = /home/export/profile
browseable = No
writeable = Yes
profile acls = yes
create mask = 0700
directory mask = 0700
#
[homes]
comment = Repertoire Personnel
browseable = No
writeable = Yes
#
[partage]
comment = Repertoire commun
browseable = Yes
writeable = Yes
public = No
path = /home/partage
Vous devez changer au moins les lignes:
* workgroup
C’est le nom de votre domaine, celui que vous allez donner à windows
* netbios name
C’est le nom votre machine (résultat de la commande ‘hostname’).
* ldap suffix
dc=…..,dc=……
* ldap admin dn
cn=admin,dc=……,dc=…..
Et éventuellement:
* hosts allow
Création des dossiers partagés
Comme vous avez pu le voir dans le fichier de configuration de samba, on partage plusieurs répertoires.
* /home/netlogon
Contient les éventuels scripts qui sont éxécutés à chaque connexion d’un utilisateur (.bat)
* /home/export/profile
Contient les profils windows de chaque utilisateur, ils sont créés automatiquement pour les nouveaux
* /home/partage
Partage commun à tous les utilisateurs du domaine
* /home/lenomdelutilisateur
Les répertoires personnels linux sont aussi partagés
Création des répertoires:
mkdir -p /home/netlogon
mkdir -p /home/export/profile
mkdir -p /home/partage
On donne les droits aux répertoires:
chmod a+w /home/export
chmod a+w /home/export/profile
chmod a+w /home/partage
Les scripts smbldap-tools
Installation
Il y a des problèmes avec la version Stable de debian (sarge) concernant le paquet smbldap-tools
Etch et SID
Le paquet smbldap-tools contient plusieurs scripts facilitant l’administration
aptitude install smbldap-tools
Sarge
On télécharge le paquet smbldap-tools de la version Sid
wget http://ftp.fr.debian.org/debian/pool/main/s/smbldap-tools/smbldap-tools_0.9.2-3_all.deb
On installe le paquet à la main
dpkg -i smbldap-tools
Pas de soucis !! c’est normal que l’installation échoue. On installe alors toutes les dépendances (tout ce qui concerne PERL)
apt-get -f install
Modification du fichier smbldap_bind.conf
Editez ou créez le fichier /etc/smbldap-tools/smbldap_bind.conf et copiez ceci:
slaveDN=”cn=admin,dc=domaine,dc=local”
slavePw=votremotdepasseenclair
masterDN=”cn=admin,dc=domaine,dc=local”
masterPw=votremotdepasseenclair
* Adaptez le comme d’habitude à votre configuration
* Il y a ici un problême de sécurité car votre mot de passe est en clair, changez les droits de ce fichier pour que seul root puisse le lire
chmod 600 /etc/smbldap-tools/smbldap_bind.conf
Modification du fichier smbldap.conf
Editez ou créez le fichier /etc/smbldap-tools/smbldap.conf et copiez ceci:
slaveLDAP=”127.0.0.1″
slavePort=”389″
masterLDAP=”127.0.0.1″
masterPort=”389″
ldapTLS=”0″
verify=”require”
### A changer ==>
suffix=”dc=domaine,dc=local”
usersdn=”ou=Users,${suffix}”
computersdn=”ou=Machines,${suffix}”
groupsdn=”ou=Groups,${suffix}”
idmapdn=”ou=Idmap,${suffix}”
sambaUnixIdPooldn=”cn=NextFreeUnixId,${suffix}”
scope=”sub”
hash_encrypt=”SSHA”
crypt_salt_format=”%s”
userLoginShell=”/bin/bash”
userHome=”/home/%U”
userHomeDirectoryMode=”700″
#Nom d’affichage - utiliser smbldap-useradd -c
userGecos=”User”
defaultUserGid=”513″
defaultComputerGid=”515″
skeletonDir=”/etc/skel”
#Les mots de passe expirent dans 10ans
defaultMaxPasswordAge=”3650″
with_smbpasswd=”0″
smbpasswd=”/usr/bin/smbpasswd”
with_slappasswd=”0″
slappasswd=”/usr/sbin/slappasswd”
Vous devez changer:
* suffix=”dc=………,dc=……”
Utilisation des scripts
smbpasswd
On commence tout d’abord par stopper samba
/etc/init.d/samba stop
Puis il faut créer le fichier /var/lib/samba/secrets.tdb: On fournit à samba le mot de passe du compte administrateur qui effectue les requêtes dans l’annuaire LDAP.
smbpasswd -w votremotdepasseroot
On relance ensuite le serveur samba:
/etc/init.d/samba start
Le démarrage du service doit etre quasi immédia, s’il dure plusiers secondes c’est qu’il y a une erreur
net getlocalsid
Vérifiez que tout c’est bien passé:
shuttle:~# net getlocalsid
SID for domain DOMAINE is: S-1-5-21-344654654654654654654654
La commande net getlocalsid ne doit retourner aucune erreur ni warning !
smbldap-populate
On va pouvoir créer l’archictecture de notre base LDAP:
smbldap-populate
Vous devez saisir deux fois votre mot de passe root si tout se passe bien !
Cette commande créée:
* Les différentes OU (Organisation Unit) qui contiendront vos Machines, Users et Groups
* Deux UID : root et nobody qui seront dans OU = Users
* Plusieurs CN (Common Name): Les groupes qui seront dans OU = Groups
Copiez quelque part la dernière ligne
sambaDomainName=domaine,dc=domaine,dc=local
domaine est le nom workroup que vous avez renseigné dans smb.conf, cette ligne servira à configurer l’interface LAM (si vous le souhaitez), copiez là quelque part.
Faites un test, ajoutez un utilisateur:
smbldap-useradd -a -c “Pierre Dupont” -m -P pdupont
* -a : désigne un utilisateur
* -c : Information Gecos : Le nom entier
* -m : Créé le répertoire personnel
* -P : création du mot de passe
Lisez l’aide:
smbldap-useradd -?
Pour être certain que l’utilisateur root a été correctement créé:
smbldap-usershow root
Cette commande vous retourne toutes les informations de l’utilisateur root de votre annuaire.
Authentification Unix
Un système Linux peut aller chercher dans différents endroits pour authentifier des utilisateurs. Par défaut il s’agit du fichier /etc/passwd Cependant on peut lui en ajouter d’autres sources de données. On va donc lui indiquer notre annuaire LDAP
NSS
On ajoute un module à NSS qui lui permet d’interroger notre annuaire LDAP
aptitude install libnss-ldap
Debconf nous pose plusieurs questions:
* Adresse du serveur LDAP : 127.0.0.1
* Nom distinctif (DN) de la base de recherche: dc=…….,dc=…..
* Version de LDAP: 3
* La base de données demande-t-elle une identification ? NON
* Le fichier de configuration doit-il être lisible et modifiable uniquement par son propriétaire ? NON
Expliquation: sinon seul root pourra interroger l’annuaire. De toute façon, il n’y a pas de mot de passe dans ce fichier
BUG:
[1]
Il y a un souci, vérifiez que dans /etc/libnss-ldap.conf vos paramètres sont corrects.
Debconf ne fonctionne pas, il laisse par défaut la directive base, (base dc=padl,dc=com)
Vous devez avoir:
host 127.0.0.1
base dc=domaine,dc=local
uri ldap://127.0.0.1/
Une nouvelle version de libnss-ldap exige une modification de son fichier de configuration: /etc/libnss-ldap.conf. Il faudra peut-être aussi modifier une ligne rootbinddn cn=admin,dc=domaine,dc=local en plus de base et uri
Par défaut, si la connexion au serveur LDAP échoue, celle-ci est automatiquement relancée, le temps écoulé avant une nouvelle connexion est augmenté à chaque fois, si bien que votre poste client n’arrive pas à booter (obligation de booter sur un live CD et de monter la partition système pour revenir à une configuration correcte).
Il faut donc modifier le mode de connexion: Par défaut il est à HARD, on décommente la ligne #bind_policy hard et l’on remplace hard par soft Ainsi, en cas d’erreur, le poste démarre quand même.
Vous devez donc avoir dans /etc/libnss-ldap.conf
# Reconnect policy:
# hard_open: reconnect to DSA with exponential backoff if
# opening connection failed
# hard_init: reconnect to DSA with exponential backoff if
# initializing connection failed
# hard: alias for hard_open
# soft: return immediately on server failure
bind_policy soft
Il est possible d’affiner considérablement la configuration, mais seule la directive base est à changer pour une configuration classique
PAM
De même, on installe le module LDAP pour PAM:
aptitude install libpam-ldap
* Hôte du serveur LDAP : 127.0.0.1
* Nom distinctif (« distinguished name») de la base de recherche : dc=……..,dc=……
* Version de LDAP: 3
* Faut-il créer une base de données locale pour l’administrateur ? NON
* La base de données requiert-elle une connexion authentifiée ? NON
* Méthode de chiffrement pour les changements de mots de passe : crypt
Vérifiez que le fichier /etc/pam_ldap.conf contient au moins:
host 127.0.0.1
base dc=domaine,dc=local
uri ldap://127.0.0.1/
Authentification gràce à LDAP
Il suffit d’indiquer maintenant au système d’aller interroger notre annuaire LDAP
nano /etc/nsswitch.conf
Il vous suffit de rajouter apres compat la directiver ldap pour
* passwd
* group
* shadow
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc’ and `info’ packages installed, try:
# `info libc “Name Service Switch”‘ for information about this file.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
ATTENTION !! En manipulant ce fichier si vous faites une erreur, vous ne pourrez plus vous connecter avec aucun de vos utilisateurs (même root) !!
On teste
Vous avez créé un utilisateur toto dans votre annuaire LDAP:
La commande:
getent passwd
Doit vous retourner quelque chose comme:
pdupont:x:1507:513:Pierre Dupont:/home/pdupont:/bin/bash
Intégration d’un client Windows
Une fois que vous avez terminé toute l’installation et la configuration de votre serveur Linux, penser à relancer les deux services:
/etc/init.d/samba stop
/etc/init.d/slapd restart
/etc/init.d/samba start
Enfin, vous pouvez tester sous Windows.
* Click droit sur Poste de Travail, Propriétés.
* Onglet Nom de l’ordinateur
* Click sur le bouton Modifier…
* Membre de: Chosissez Domaine : Saisissez le nom de la directive workgroup que vous avez renseigné dans smb.conf
* OK
* On vous demande un login: root et votre mot de passe : celui de root
* Si tout va bien le message ” Bienvenue dans le domaine ….” s’affiche.
* Redémarrez la machine
* Choisissez le domaine que vous avez créé et connectez vous avec root ou toto
Votre profile Windows est stocké sur le serveur Linux dans /home/export/profile/ chaque utilisateur possède son répertoire. Il contient les éléments de votre bureau, le répertoire “Mes Documents”, les fichiers de configuration des applications (Firefox, Thunderbird….).
Si votre utilisateur dispose d’un répertoire personnel sur le serveur Linux (/home/utilisateur) il est automatiquement créé dans le Poste de Travail. C’est bien pratique si vous utilisez un dual boot sur les machines clientes.
Netlogon
Vous pouvez créer des scripts qui s’executeront à chaque ouverture de Windows pour créer d’autres partages dans le poste de travail par exemple:
net use S: \\serveursamba\partage
Ou en encore mettre votre machine à la même heure que celle du serveur Linux:
net time \\serveursamba /SET /YES
Ces scripts sont à placer dans /home/netlogon. Attention, il faut que ce fichier soit au format DOS c’est-à-dire avec les caractères retour à la ligne DOS ! Créez les scripts sous windows ou utilisez le paquet “mtools” qui permet la conversion au format DOS.
On peut utiliser les variables %u (utilisateur) et %g (groupe)
Interfaces d’administration
smbldap-tools
Le paquet smbldap-tools contient plusieurs scripts pour gèrer les utilisateurs, groupes et machines dans l’annuaire LDAP.
smbldap-groupadd smbldap-groupshow smbldap-useradd smbldap-usermod
smbldap-groupdel smbldap-passwd smbldap-userdel smbldap-usershow
smbldap-groupmod smbldap-populate smbldap-userinfo
Vous pouvez afficher toutes options possibles en faisant:
smbldap-… -?
Vous pouvez spécifier des options dans /etc/smbldap-tools/smbldap.conf
PHPLDAPADMIN
C’est une sorte déquivalent de PHPMYADMIN (Pour gèrer son serveur Mysql). PHPLDAPADMIN vous permet de manipuler et de visualiser facilement les éléments de votre annauire LDAP.
Installation
aptitude install phpldapadmin
On ouvre un navigateur internet:
http://adresseipduserveur/phpldapadmin
Login DN
cn=admin,dc=domaine,dc=local
Password
votre mot de passe
LDAP Account Manager : LAM
Installation:
aptitude install ldap-account-manager
Il est difficile de détailler la configuration car l’interface a déjà changé 3 fois depuis que je l’utilise. Voici d’une manière générale ce qu’il faut faire:
* Commencez par cliquer sur le lien “LAM configuration” en haut à droite
* Le mot de passe par défaut est “lam”
* Dans la section “Server settings”
Server address *:
ldap://localhost:389
Tree suffix:
dc=XXXXXX,dc=XXX
* Dans la rubrique “Edit account type”, modifiez les champs “LDAP suffix”
Users: User accounts (e.g. Unix, Samba and Kolab)
ou=users,dc=XXXXXXXX,dc=XXXX
Groups: Group accounts (e.g. Unix and Samba)
ou=groups,dc=XXXXXXXX,dc=XXXX
Hosts: Host accounts (e.g. Samba)
ou=machines,dc=XXXXXXXX,dc=XXXX
Samba domains: Samba 3 domain entries
sambaDomainName=YYYYYYY,dc=XXXXX,dc=XXXXX
C’est la ligne que vous retourne smbldap-populate
* Validez
* Dans la section Security settings
Par défaut il y a cn=Manager,dc=XXXXX,dc=XXXXXX pour le champs “List of valid users *:”, adaptez cette ligne en utilisant cn=admin,dc=XXXXX,dc=XXXXX Ajoutez votre mot de passe admin de l’annuaire LDAP.
* Validez
* Retournez à la page de connexion, cette fois ci l’utilisateur est “admin” et non plus “manager”, saisissez votre mot de passe LDAP
Apache Directory Studio
Le dernier que j’ai trouvé et qui me semble très complet. Application de la célèbre fondation Apache ! Le développement semble assez actif. A noter que la fondation Apache développe aussi un serveur LDAP, evidement Apache Directory Studio est aussi compatible avec OpenLdap. Le serveur LDAP de la fondation Apache est: http://directory.apache.org/ il faudrait tester si samba se comporte pareil qu’avec OpenLDAP.
http://directory.apache.org/studio/
Luma
Logiciel en QT:
aptitude install luma





