{ Prog en vrac }

Accueil

Linux


Debian (squeez) SAMBA PDC avec annuaire OpenLDAP

24
sep
par senti
Linux

Suite à l’arrivée récente de Windows 7 pro dans mon entreprise, j’ai voulu ajouté mes machines sur mon contrôleur de domaine SAMBA (3.2.5) et malheureusement j’ai eux la surprise de découvrir que mon windows 7 n’arrivait pas à dialoguer avec mon contrôleur de domaine.
J’ai donc attaqué les recherches pour savoir si d’autres personnes avait le même soucis... Et apparemment oui.... La version 3.2.5 n’est pas compatible avec windows 7...
J’ai donc décidé de tester avec la distribution testing de debian, pour savoir si cela fonctionnerai avec la nouvelle version de samba.
Voici donc le tutoriel issue de cette installation, en ésperant qu’il puisse servir à nombre d’entre vous.

1. Prérequis

Tout d’abord nous allons changer le niveau de debconf par défaut celui-ci est sur dialogue et élevé. Nous allons le reconfigurer en dialogue et intermédiaire. Pour cela faire un :

dpkg-reconfigure debconf

2. Installation de openLDAP (2.4.23)

2.1 Installation des paquets

apt-get install slapd ldap-utils ldapvi

Lors de cette installation un certain nombre de questions seront posées :

- Faut il omettre la configuration d’OpenLDAP ? Non
- Nom de domaine : dev.net
- Nom de votre organisation : dev
- Mot de passe administrateur : ********
- Faut-il autoriser le protocole LDAPv2 : Non

Attention : Dans la nouvelle version d’openldap le fichier slapd.conf n’existe plus il est remplacé par le répertoire /slapd.d, Nous verrons comment faire par la suite pour ajouter le nouveau schéma samba.

2.2 Installation de phpldapadmin (1.2.0.5)

Afin de visualiser notre nouveau LDAP, je vous propose l’installation de phpldapadmin qui nous permettra de visualiser plus simplement notre annuaire ldap qui pour l’instant ne contient pas grand chose.
Il est important aussi de noter que l’installation de celui-ci à un peu changé aussi.

apt-get install phpldapadmin

Lors de l’installation un certain nombre de question seront posées :

- Adresse du serveur LDAP : 127.0.0.1 (si votre annuaire est sur un autre serveur donnez lui son adresse biensûr)
- Faut-il gérer le protocole LDAPS : non
- Nom distinctif de la base de recherche : dc=dev, dc=net
- Type d’authentification : session (vous avez le choix entre session, cookie, config)
- Identifiant dn de connexion au serveur LDAP : cn=admin,dc=dev, dc=net
- Serveur web à reconfigurer automatiquement : apache2 (vous avez le choix entre apache, apache-ssl, apache-perl et apache2).
- Faut-il redémarrer le serveur web : oui

Une fois l’installation terminée allez sur un poste qui dispose d’un navigateur internet et testez si phpldapadmin est bien installé.

http://X.X.X.X/phpldapadmin/

Une fois sur l’interface vous pouvez vous connecter à votre annuaire en tant qu’admin avec votre mot de passe administrateur LDAP.

2.3 Installation du schéma samba

L’installation de ce schéma est essentiel car il contient les attributs nécessaire au LDAP pour la bon dialogue avec samba en PDC.

apt-get install samba-doc

Puis ensuite

gunzip -c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

Une fois cette étape finie dans l’ancienne version il suffisait d’ajouter le schema dans slapd.conf.
Mais avec la nouvelle version de samba quand on fait un

ls -l /etc/ldap/slapd.d/cn=config/cn=schema


on obtient :

-rw------- 1 openldap openldap 15474 24 sept. 13:39 cn={0}core.ldif
-rw------- 1 openldap openldap 11308 24 sept. 13:39 cn={1}cosine.ldif
-rw------- 1 openldap openldap  6438 24 sept. 13:39 cn={2}nis.ldif
-rw------- 1 openldap openldap  2802 24 sept. 13:39 cn={3}inetorgperson.ldif

et on constate que notre schéma n’est pas présent. La solution (qui n’est peut etre pas la bonne, car j’avoue avoir cherché longtemps sans en trouvé de meilleur et la doc d’openldap est très très chiante à comprendre) est de creer un fichier /etc/ldap/slapd.conf manuellement et d’y inclure les schémas nécessaires.
Attention il faut remettre les anciens schéma sous peine d’avoir un message d’erreur.

vim /etc/ldap/slapd.conf

puis

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

Et on sauvegarde en sortant.
Une fois ce fichier créer on lance la commande suivante qui convertira au nouveau format :

slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/

la commande doit vous retourner config testing succeeded.

Si on refait un petit ls -l /etc/ldap/slapd.d/cn=config/cn=schema on constate que le schéma est bien ajouté, mais que le propriétaire est root et non openldap comme ci-dessous.

-rw------- 1 openldap openldap 15474 24 sept. 13:39 cn={0}core.ldif
-rw------- 1 openldap openldap 11308 24 sept. 13:39 cn={1}cosine.ldif
-rw------- 1 openldap openldap  6438 24 sept. 13:39 cn={2}nis.ldif
-rw------- 1 openldap openldap  2802 24 sept. 13:39 cn={3}inetorgperson.ldif
-rw------- 1 root     root     12492 24 sept. 14:13 cn={4}samba.ldif

on va donc lancer les commandes suivantes pour lui donner les droits

chown openldap:openldap /etc/ldap/schema/ -R
chown openldap:openldap /etc/ldap/slapd.d/ -R

Un fois ces commandes exécuté on peut enfin faire un redémarrage du serveur ldap.

/etc/init.d/slapd restart

3. Installation de SAMBA

Nous allons maintenant attaquer la partie PDC avec samba. Pour cela nous allons installer un certain nombre d’éléments (samba, smbclient, smbfs,smbldap-tools).

apt-get install samba smbclient smbfs smbldap-tools

Lors de l’installation de samba un certain nombre de questions seront posées :

- Nom du domaine ou groupe de travail : DEV
- Voulez vous chiffrer les mots de passe : Oui
- Modifier smb.conf pour utiliser les paramètres WINS fournis par DHCP : Non
- Comment voulez-vous lancer Samba : Demon
- Faut-il créer une base de données /var/lib/samba/passdb.tdb : Non

Une fois l’installation du serveur SAMBA effectuée, arretez le service samba en faisant :

/etc/init.d/samba stop

3.1 Configuration du fichier smb.conf

Avant toute chose faire une copie de sauvegarde du fichier d’origine (on est jamais assez prudent hein :p)

cp /etc/samba/smb.conf /etc/samba/smb.conf.save

Une fois la copie effectuée, éditez le fichier smb.conf avec votre éditeur préférer et changer les paramètres à l’intérieur. Voici ci-dessous mon fichier smb.conf pour plus de simplicité.

[global]
workgroup = DEV
server string = Controleur de domaine
netbios name = developpement
domain master = yes
local master = yes
domain logons = yes
client lanman auth = yes
client ntlmv2 auth = yes
lanman auth = yes
ntlm auth = yes
security = user
os level = 40
ldap ssl = off
ldap passwd sync = yes
passdb backend = ldapsam:ldap://127.0.0.1
ldap admin dn = cn=admin,dc=dev,dc=net
ldap suffix = dc=dev,dc=net
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\profiles\%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
winbind use default domain = Yes
nt acl support = Yes
msdfs root = Yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
# autre possibilité "veto files = "
#
# Reglage de l'encodage des caracteres :
unix charset = iso-8859-15
display charset = iso-8859-15
dos charset = 850
#
[netlogon]
path = /home/dev/netlogon
writable = No
browseable = No
write list = Administrateur
#
[profiles]
path = /home/dev/profiles
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
#
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
#
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers

Une fois le fichier smb.conf sauvegardé il va falloir créer les répertoires pour les scripts de connexion, les profiles itinérants ainsi que le partage sur le serveur.

mkdir /home/dev/netlogon
mkdir /home/dev/profiles && chmod 777 /home/dev/profiles
mkdir /home/dev/partage

Après la création des répertoires ne pas oublier de verifier la configuration du fichier smb.conf de samba en faisant :

testparm

cette commande doit vous renvoyer :

Loaded services file OK.
Server role : ROLE_DOMAIN_PDC

N’oubliez pas de faire un petit

/etc/init.d/samba start

3.2 Mot passe LDAP vers SAMBA

Afin d’administrer correctement le serveur LDAP samba aura besoin du mot de passe administrateur de celui-ci... Pour cela tapez la commande suivante et donné le mot de passe administrateur du ldap.

smbpasswd -w *****

samba doit vous répondre :

Setting stored password for "cn=admin,dc=dev,dc=net" in secrets.tdb

3.3 configuration des outils smbldap-tools

smbldap-tools est un ensemble de script permettant de créer les utilisateurs POSIX de manière automatique.
La configuration de celui-ci se fait par l’intermédiaire de deux fichiers qui ne sont pas encore présent sur notre système :
- /etc/smbldap-tools/smbldap_bind.conf
- /etc/smbldap-tools/smbldap.conf

Il faudra donc les créer manuellement...

3.3.1 Fichier smbldap_bind.conf

voici le détail du fichier smbldap_bind ci-dessous :

masterDN="cn=admin,dc=dev,dc=net"
masterPw="toto"
slaveDN="cn=admin,dc=dev,dc=net"
slavePw="toto"

Comme vous pouvez le constater le mot de passe administrateur du LDAP est en clair, il est donc important de lui changer les droits d’accès...

chmod 600 /etc/smbldap-tools/smbldap_bind.conf

3.3.2 Fichier smbldap.conf

Le fichier smbldap.conf, contient un peu plus de parametre et a aussi besoin du SID du domaine. Pour cela faire un :

net getlocalsid

vous devez obtenir :

SID for domain DEV is: S-1-5-21-738282185-3837675623-175508106

Attention si vous avez des erreurs TLS... cela veut dire que vous avez oublié un paramètre dans votre fichier smb.conf (ldap ssl = off) !!!!

une fois le SID en poche il ne reste plus qu’a faire le fichier de configuration comme ci-dessous :

SID="S-1-5-21-738282185-3837675623-175508106"
masterLDAP="127.0.0.1"
masterPort="389"
slaveLDAP="127.0.0.1"
slavePort="389"
ldapTLS="0"
verify="require"
suffix="dc=dev,dc=net"
usersdn="ou=Users,${suffix}"
computersdn="ou=Machines,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
# La ligne ci-dessous est commentee pour eviter une erreur lors de
# l'execution de la commande smbldap-populate.
# sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
#sambaUnixIdPooldn="sambaDomainName=dev,${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"
# mk_ntpasswd="/usr/local/sbin/mkntpwd"

3.3.3 smbldap-populate

La commande smbldap-populate va créer notre arbre de base au sein du LDAP. Pour cela il suffit de faire :

smbldap-populate

le résultat doit etre :

Populating LDAP directory for domain dev (S-1-5-21-738282185-3837675623-175508106)
(using builtin directory structure)

entry dc=dev,dc=net already exist.
adding new entry: ou=Users,dc=dev,dc=net
adding new entry: ou=Groups,dc=dev,dc=net
adding new entry: ou=Machines,dc=dev,dc=net
adding new entry: ou=Idmap,dc=dev,dc=net
adding new entry: uid=root,ou=Users,dc=dev,dc=net
adding new entry: uid=nobody,ou=Users,dc=dev,dc=net
adding new entry: cn=Domain Admins,ou=Groups,dc=dev,dc=net
adding new entry: cn=Domain Users,ou=Groups,dc=dev,dc=net
adding new entry: cn=Domain Guests,ou=Groups,dc=dev,dc=net
adding new entry: cn=Domain Computers,ou=Groups,dc=dev,dc=net
adding new entry: cn=Administrators,ou=Groups,dc=dev,dc=net
adding new entry: cn=Account Operators,ou=Groups,dc=dev,dc=net
adding new entry: cn=Print Operators,ou=Groups,dc=dev,dc=net
adding new entry: cn=Backup Operators,ou=Groups,dc=dev,dc=net
adding new entry: cn=Replicators,ou=Groups,dc=dev,dc=net
entry sambaDomainName=dev,dc=dev,dc=net already exist. Updating it...

Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password:
Retype new password:

Si vous avez des messages d’erreurs assurez vous que votre schéma samba est bien présent dans les schémas de votre serveur openldap...

Vous pouvez aussi visualiser que sur votre interface phpldapadmin l’architecture a été mis à jour.

4. Installation de libnss-ldap et libpam-ldap

Nous allons maintenant installer et configurer la librairie qui permet d’utiliser l’annuaire (libnss-ldap) et la librairie qui permet de s’authentifier sous unix (libpam-ldap)

apt-get install  libnss-ldap libpam-ldap

Lors de l’installation un certain nombre de question seront posées :

- Identifiant uniforme de ressource (« URI ») du serveur LDAP : ldap ://127.0.0.1
- Nom distinctif (DN) de la base de recherche : dc=dev,dc=net
- Version de LDAP utiliser : 3
- La base LDAP demande-t-elle une identification : non
- Privilèges LDAP spécifiques pour le superutilisateur : oui
- Rendre le fichier de configuration lisible et modifiable uniquement par son propriétaire : non
Compte LDAP pour le superutilisateur (« root ») :
cn=admin,dc=dev,dc=net
- Mot de passe du compte du superutilisateur LDAP : ****
- Donner les priviéges de superutilisateur local au compte administrateur LDAP ? oui
- La base LDAP demande-t-elle une identification : non
- Compte LDAP pour le superutilisateur (« root ») :
cn=admin,dc=dev,dc=net
- Mot de passe du compte du superutilisateur LDAP : ****
- Algorithme de chiffrement a utiliser localement pour les mots de passe : chiffré

Maintenant que les librairies sont configurées, on doit activer la recherche LDAP en modifiant le fichier de configuration /etc/nsswitch.conf. Pour cela il faut simplement ajouter ldap à passwd,group et shadow

passwd: compat ldap
group: compat ldap
shadow: compat ldap

5. Ajout utilisateur Samba LDAP

Pour ajouter un utilisateur sur l’annuaire il suffit de faire un :

smbldap-useradd -a -c "senti" -m -P senti

si vous faite un ls -la sur repertoire /home vous devait avoir Domain Users

drwxr-xr-x  5 dev     dev          4096 24 sept. 14:55 dev
drwx------  2 senti Domain Users 4096 24 sept. 16:33 senti

6 Suppression d’un utilisateur sur le LDAP

Pour supprimer un utilisateur sur l’annuaire il suffit de faire un :

smbldap-userdel senti

7. changer le mot de passe d’un utilisateur

Pour changer le mot de passe utilisateur sur l’annuaire il suffit de faire un :

smbldap-passwd senti

Voilà pour les principales commandes, il en existe beaucoup d’autre et je n’ai pas le temps de les détailler ici.

En ce qui concerne la liaison avec vos session windows xp, vista, seven, il ne reste plus qu’a faire la liaison avec votre PDC. N’oubliez pas que l’utilisateur autorisé à joindre les utilisateurs au domaine est "root" si vous souhaitez que ce soit administrateur il est possible d’ajouter un user administrateur en faisant :

smbldap-populate -a Administrateur

Bon courage :D


SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0
Referencement Team | Actimonde | Hannuaire | referencement sites