Vous êtes sur la page 1sur 16

Samba : Monter un controleur de domaine

avec OpenLDAP
(Redirig depuis Controleur de domaine Samba avec OpenLDAP)

Il y a de a dj quelques annes j'avais cris une doc sur le wiki de fedora-fr.org sur l'installation
d'un systme OpenLDAP + Samba ...
Bon cette doc a pris un bon coup de vieux avec le temps et j'ai mis au point des mthodes bien
plus prcises, mais elle vallait le coup d'tre cite et je mettrais quelques annotations quand
j'aurais refais le tour.
Ecrit Par : Adadov
Ce type de serveur permet de grer l'authentification centralise pour des clients Windows et
Linux.
Sommaire
[masquer]

1 Configuration du serveur OpenLDAP

2 Configuration de samba

3 Cration et gestion des comptes dans l'annuaire

3.1 Utilitaires OpenLDAP et fichiers LDIF

3.2 Les smbldap-tools

3.2.1 Configuration

3.2.2 Utilisation

4 Configuration des clients Linux


o

4.1 Configuration PAM

4.2 Client LDAP

4.3 Configuration NSS

5 Configuration des clients Windows


o

5.1 Cration du compte ordinateur

5.2 Ajout de l'ordinateur Windows dans le domaine

6 Quelques trucs pouvant aider


o

6.1 Impossible de se connecter en tant que root

Configuration du serveur OpenLDAP


La configuration du serveur LDAP se fait par le fichier <path>/etc/openldap/slapd.conf</path>.
Nous utiliserons les informations suivantes pour crer l'architecture LDAP :
Les utilisateurs sont placs dans l'Unit d'Organisation (OU) Users. Les machines dans une OU
Computers.
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include

/etc/openldap/schema/core.schema

include

/etc/openldap/schema/cosine.schema

include

/etc/openldap/schema/inetorgperson.schema

include

/etc/openldap/schema/nis.schema

include

/etc/openldap/schema/samba.schema

On intgre les schmas samba et automount en plus des schmas par dfaut.
# Allow LDAPv2 client connections.

This is NOT the default.

allow bind_v2
pidfile

/var/run/openldap/slapd.pid

argsfile

/var/run/openldap/slapd.args

TLSCACertificateFile

/etc/pki/tls/certs/ca-bundle.crt

TLSCertificateFile

/etc/pki/tls/certs/slapd.pem

TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

Certificats pour l'utilisation de LDAP sur TLS/SSL (optionel).


access to dn.children="ou=Users,dc=exemple,dc=com" \
attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPw
dLastSet
by anonymous auth
by * none

access to dn.children="ou=Admins,dc=exemple,dc=com" \
attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPw
dLastSet
by anonymous auth
by * none
access to dn.children="ou=Computers,dc=exemple,dc=com" \
attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPw
dLastSet
by anonymous auth
by * none
access to *
by self write
by * read

On met en place des restrictions d'accs sur certains attributs de manire ce que seuls les
administrateurs LDAP et le titulaire de la fiche puissent crire les attributs sensibles, et on bloque
l'accs aux autres utilisateurs sur ces champs. L'accs toutes les autres donnes de l'annuaire
peut donc se faire de manire anonyme.(On peut scuriser a en venant forcer l'authentification
des utilisateurs pour lire il suffit pour cela de remplacer :
by * read

par
by users read
by anonymous auth
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################
database

bdb

suffix "dc=exemple,dc=com"
rootdn "cn=Manager,dc=exemple,dc=com"
rootpw secret

rootdn et rootpw sont les informations de connexion du superutilisateur LDAP, rootpw peut (et
doit) tre chiffr dans le fichier, pour ce faire utiliser le programme slappasswd qui vous
demandera le mot de passe et vous l'affichera dans le shell chiffr en SSHA il vous suffira ensuite
de venir le coller comme valeur pour rootpw

# The database directory MUST exist prior to running slapd AND


# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory

/var/lib/ldap

# Indices to maintain for this database


index objectClass

eq,pres

index ou,cn,mail,surname,givenname

eq,pres,sub

index uidNumber,gidNumber,loginShell

eq,pres

index uid,memberUid

eq,pres,sub

Il faut ensuite venir crer la racine de l'annuaire, a peut tre fait simplement l'aide de la
commande smbldap-populate contenue dans les smbldap-tools. Il est aussi possible de le faire
la main avec un fichier ldif de ce type :
dn: dc=exemple,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: exemple
dc: exemple
description: Racine de l'annuaire

Configuration de samba
La configuration de Samba se fait dans le fichier <path>/etc/samba/smb.conf</path>
[global]
workgroup = EXEMPLE
netbios name = SRV
hosts allow = 192.168. 127.0.0
log file = /var/log/samba/access.log
log level = 1
max log size = 10
security = user
encrypt passwords = true
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
domain logons = Yes
domain master = Yes
preferred master = Yes
os level = 66

local master = Yes


wins support = Yes
guest account = nobody
printing = cups
printcap name = cups
oplocks = No
level2 oplocks = No
kernel oplocks = No

template shell = /bin/false


winbind use default domain = no

;option LDAP
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=exemple,dc=com
ldap machine suffix = ou=Machines
ldap user suffix = ou=Users
ldap group suffix = ou=Group
ldap admin dn = "cn=Manager,dc=exemple,dc=com"
ldap passwd sync = Yes
enable privileges = Yes
logon path = \\%L\profiles\%U
# Table d'encodage des caractres (je fixe sur celui-l pour avoir le mme
que sous windows)
Unix Charset = ISO8859-15
#SMBLDAP-TOOLS
add user script = /usr/sbin/smbldap-useradd -m "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user script = /usr/sbin/smbldap-userdel "%u"
delete group script = /usr/sbin/smbldap-groupdel "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
passwd program = /usr/sbin/smbldap-passwd -u %u

admin users = @Administrators


[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
browseable = no

[profiles]
path = /srv/profiles
browseable = no
guest ok = yes

Je ne vais pas dtailler toutes les lignes de la configuration de Samba ce serait bien trop long, je
vais donc seulement donner l'explication des lignes spcifiques notre projet :
domain logons = Yes
domain master = Yes
;option LDAP
passdb backend = ldapsam:ldap://127.0.0.1

Adresse du serveur LDAP, on peut facilement en mettre plusieurs sur cette ligne pour faire une
tolrance de panne
ldap suffix = dc=exemple,dc=com
ldap machine suffix = ou=Machines
ldap user suffix = ou=Users
ldap group suffix = ou=Group

Ce sont les chemins de recherche dans la base LDAP pour les diffrents lments.
ldap admin dn = "cn=Manager,dc=exemple,dc=com"

Le DN du Manager, l'utilisateur qui aura les pleins pouvoirs sur la base LDAP
ldap passwd sync = Yes

ldap passwd sync fait en sorte que les mots de passe Windows et Linux soient toujours
identiques.
logon path = \\%L\profiles\%U

Chemin pour les profiles itinrants Windows %L est le LogonServer et %U le nom de l'utilisateur.
Il vous faudra ensuite venir donner Samba le mot de passe du manager de l'annuaire afin qu'il
puisse accder librement aux donnes, ceci se fait l'aide de la commande :
smbpasswd -W

Cration et gestion des comptes dans l'annuaire


C'est ici que commence la partie la plus pnible si on n'utilise pas de GUI, il faut maintenant venir
peupler notre annuaire pour que les stations viennent chercher les informations utilisateurs
dedans.
La manire la plus basique est de faire les utilisateurs l'aide de fichier ldif et de venir les
intgrer dans la base l'aide des clients OpenLDAP.

Utilitaires OpenLDAP et fichiers LDIF


Un fichier LDIF type pour un utilisateur :
dn: uid=user1,ou=Users,dc=example,dc=com
cn: user1
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: user1
userPassword:: eMNoen1gVuZerulrbsFdre9PVAJRSIROSL3sS4LESS09
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/ldap/user1
loginShell: /bin/bash

Pour le userPassword vous pouvez le rentrer en clair ou crypt avec les protocoles CRYPT,
SSHA ou MD5.
Un fois que vous avez entr ces quelques lignes dans un fichier quelquechose.ldif il ne vous
reste plus qu' introduire ces donnes dans l'annuaire, pour cela nous allons utiliser la
commande :
ldapadd -x -D cn=Manager,dc=exemple,dc=com -W -f quelquechose.ldif

L'utilitaire devrait vous demander un mot de passe entrez celui que vous avez mis comme rootpw
dans votre fichier slapd.conf (ben oui on a mis le rootdn dans la commande).

Et voil vous venez de rajouter un utilisateur dans votre annuaire vous devriez pouvoir faire su
user1 maintenant sur n'importe quel client bien configur.

Les smbldap-tools
Ce sont de petits utilitaires qui permettent une gestion simplifie des donnes de l'annuaire.
Ils peuvent tre utiliss pour grer aussi bien les comptes Windows que les comptes Linux.

Configuration
Le fichier smbldap_bind.conf contient les informations de connexion qu'utiliseront les smbldaptools donc de toute vidence il faut mettre ici un compte utilisateur qui a le droit de crer des
entres diverses dans la base LDAP, pour le moment nous mettrons le Manager, celui qui a tous
les droits.
<path>/etc/smbldap/smbldap_bind.conf</path> :
slaveDN="cn=Manager,dc=exemple,dc=com"
slavePw="secret"
masterDN="cn=Manager,dc=exemple,dc=com"
masterPw="secret"

Le fichier smbldap.conf, contient toute la configuration des tools proprement parler, spar en
trois grandes parties : La configuration du domaine et l'accs au LDAP :
# Le nom du domaine, s'il est non dfini la valeur sera celle de samba
sambaDomain="EXEMPLE"
# Adresse du serveur LDAP esclave
slaveLDAP="127.0.0.1"
# Adresse du serveur LDAP maitre
masterLDAP="127.0.0.1"
# Ne pas utiliser TLS pour scuriser la connexion avec LDAP
ldapTLS="0"
# Suffixe LDAP (la racine de votre base LDAP)
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=exemple,dc=com"
# OU contenant les utilisateurs
usersdn="ou=Users,${suffix}"
# OU contenant les comptes ordinateurs (clients windows)
computersdn="ou=Computers,${suffix}"
# OU contenant les groupes
groupsdn="ou=Group,${suffix}"

# OU idmap (utile uniquement en cas d'utilisation de plusieurs LDAP )


idmapdn="ou=Idmap,${suffix}"
# Rechercher par dfaut dans les sous OU aussi
scope="sub"
# Cryptage par dfaut des mots de passe Linux
# (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="SSHA"
La configuration des options par dfaut Linux :
# Shell par dfaut
userLoginShell="/bin/bash"
# Chemin du rpertoire home linux
userHome="/home/ldap/%U"
# Mode donn au Home lors de sa cration
userHomeDirectoryMode="700"
# Commentaire par dfaut
userGecos="System User"
# Groupe principal par dfaut
defaultUserGid="513"
# Groupe principal par dfaut pour un compte ORDINATEUR
defaultComputerGid="515"
# Rpertoire modle pour la cration des nouveaux home
skeletonDir="/etc/skel"
# Nombre de jours maximum pour la validit du mot de passe
defaultMaxPasswordAge="45"

La configuration des options par dfaut Windows :


# Partage monter en tant que Home Drive la connexion
userSmbHome="%LOGONSERVER%\%U"
# Chemin du profil itinrant
userProfile="%LOGONSERVER%\profiles\%U"

# Lettre utiliser pour monter le Home Drive


userHomeDrive="Z:"
# Nom du script d'ouverture de session (doit tre dans le partage
NETLOGON)
userScript="logon.bat"
# Domaine par dfaut de l'email
mailDomain="exemple.com"
# L'utilisateur peut changer son mot de passe
sambaPwdCanChange="1"

Utilisation
smbldap-useradd : le premier utilitaire et surement un des plus utilis qui permet de venir ajouter
des utilisateurs simplement dans la base LDAP avec les attributs POSIX et/ou SAMBA.
Cet utilitaire permet de mettre en place de nouveaux utilisateurs avec le parametrage de tous les
attributs utiles de manire assez intuitive car la plupart des options de la ligne de commande sont
similaires celles de smbpasswd ou passwd.
Usage: /usr/sbin/smbldap-useradd [-awmugdsckABCDEFGHMNPST?] username
-o

ajoute l'utilisateur dans l'OU (relative au suffix utilisateur)

-a

est un utilisateur Windows (sinon, uniquement POSIX)

-b

est un utilisateur AIX

-w

est une station de travail Windows

-i

is a trust account (Windows Workstation)

-u

uid

-g

gid

-G

groupes supplmentaires spars par des virgules

-n

ne pas crer de groupe

-d

home

-s

shell

-c

commentaires

-m

crer le rpertoire home et copier /etc/skel

-k

rpertoire squelette (avec -m)

-t

temps. attendre 'temps' secondes avant de quitter ( avec -w )

-P

excute smbldap-passwd aprs

-A

peux changer le mot de passe ? 0 = non, 1 = oui

-B

dois changer le mot de passe ? 0 = non, 1 = oui

-C

sambaHomePath

-D

sambaHomeDrive

-E

sambaLogonScript (Script de login)

-F

sambaProfilePath (Chemin du profil utilisateur)

-H

sambaAcctFlags (Bits de contrle de compte Samba)

-N

surnom

-S

nom de famille

-M

adresses email locales (spares par des virgules)

-T

adresse email de transfert

-?

affiche ce message d'aide

smbldap-passwd : Dfinir ou redfinir le mot de passe d'un utilisateur


Usage: /usr/sbin/smbldap-passwd [options] [username]
-h, -?, --help show this help message
-s

update only samba password

-u

update only UNIX password

smbldap-userdel : Supprimer un utilisateur


Usage: /usr/sbin/smbldap-userdel [-r?] username
-r

remove home directory

-R

remove home directory interactively

smbldap-usermod : Permet de modifier simplement et rapidement les options d'un utilisateur


avec les mmes fonctions que smbldap-useradd.
Usage: /usr/sbin/smbldap-usermod [-awmugdsckABCDEFGHIPSMT?h] username
Available options are:
-c

gecos

-d

home directory

-r

new username (cn, sn and dn are updated)

-u

uid

-o

uid can be non unique

-g

gid

-G

supplementary groups (comma separated)

-s

shell

-N

canonical name

-S

surname

-P

ends by invoking smbldap-passwd

For samba users:


-a

add sambaSAMAccount objectclass

-e

expire date ("YYYY-MM-DD HH:MM:SS")

-A

can change password ? 0 if no, 1 if yes

-B

must change password ? 0 if no, 1 if yes

-C

sambaHomePath (SMB home share, like '\\PDC-SRV\homes')

-D

sambaHomeDrive (letter associated with home share, like 'H:')

-E

sambaLogonScript (DOS script to execute on login)

-F

sambaProfilePath (profile directory, like '\\PDC-

SRV\profiles\foo')
-H

sambaAcctFlags (samba account control bits like '[NDHTUMWSLKI]')

-I

disable an user. Can't be used with -H or -J

-J

enable an user. Can't be used with -H or -I

-M

mailAddresses (comma separated)

-T

mailToAddress (forward address) (comma separated)

-?|-h show this help message

smbldap-group* : on retrouve les mmes commandes que pour les utilisateurs mais qui eux
agissent comme leur nom l'indique sur les groupes.
smbldap-populate : cette commande n'est utilise qu'une seule fois normalement au moment o
vous venez de finir la configuration de votre serveur LDAP pour crer la base le l'architecture.
Une fois que le serveur LDAP et les smbldap-tools sont configurs excutez cette commande
pour que les OU et la base de l'annuaire soient crs automatiquement en fonction des
paramtres dfinis dans la configuration des smbldap-tools.

Configuration des clients Linux


Nous avons donc trois endroits o modifier la configuration :

Configuration PAM
La configuration de PAM se fait sous Fedora ,pour les options appliquer sur tout le systme,
dans le fichier <path>/etc/pam.d/system-auth</path> :
auth

sufficient

pam_ldap.so use_first_pass

account

[default=bad success=ok user_unknown=ignore] pam_ldap.so

password

sufficient

pam_ldap.so use_authtok

session

optional

pam_ldap.so

Vous pouvez constater que l'on retrouve le module pam_ldap.so dans les 4 sections.

Client LDAP
Il est prfrable de modifier ce fichier la main pour vraiment savoir ce que l'on met dedans de
plus certaines distributions intgrent des outils pour faciliter la configuration de ces fichiers mais
pas toutes.
Voil un fichier /etc/ldap.conf en exemple :
host ldap1.example.com
base dc=example,dc=com
ldap_version 3
port 389
scope one

pam_filter objectclass=posixaccount
pam_login_attribute uid
pam_member_attribute gid
pam_password crypt
nss_base_passwd ou=Users,dc=example,dc=com
nss_base_shadow ou=Users,dc=example,dc=com
nss_base_group ou=Group,dc=example,dc=com
bind_policy soft

Dans ce fichier il faudra modifier la ligne scope one par scope sub si l'on utilise des sous-OU.
Mais il vous faudra aussi modifier le fichier <path>/etc/openldap/ldap.conf</path> pour que tous
les utilitaires fonctionnent
Voil un fichier <path>/etc/openldap/ldap.conf</path> en exemple :
BASE dc=example,dc=com
URI ldap://ldap1.example.com/

Configuration NSS
La configuration de NSS est vraiment simple comprendre et arranger comme on le souhaite,
il suffit de chercher dans le fichier <path>/etc/nsswitch.conf</path> les lignes pour les bases de
donnes que l'on souhaite voir utiliser LDAP et de venir rajouter la fin de la ligne ldap tout
simplement. Ce qui nous donnera dans le cas de l'authentification des utilisateurs les lignes
suivantes :
passwd:

files ldap

shadow:

files ldap

group:

files ldap

L'attribut files en dbut de ligne spcifie qu'il doit d'abord chercher dans les fichiers en local et
venir complter ses informations avec LDAP. Nous pouvons aussi voir les autres lignes et ajouter
LDAP certaines suivant les informations que nous voulons dans notre annuaire.
Pour viter les requtes trop nombreuses
Pour viter les requtes trop nombreuses sur le serveur LDAP vous pouvez activer le service nscd
sur vos clients linux qui mettra en cache les rsultats de requtes et viter ainsi de surcharger le
serveur LDAP.

Configuration des clients Windows


Cration du compte ordinateur
La mthode la plus simple est d'utiliser les smbldap-tools pour le faire, il vous suffira de taper la
commande suivante :
smbldap-useradd -w NomOrdinateur$

Le nom du compte
Vous pouvez crire le nom du compte avec ou sans le $ la fin mais je vous conseille de prendre
l'habitude de le mettre afin de bien garder en tte que tout ce qui finit par $ est un ordinateur
Windows. Si vous ne le mettez pas smbldap-useradd le fera pour vous.

Ajout de l'ordinateur Windows dans le domaine


De ce cot-l aussi a donne dans la simplicit, si tout a t bien configur cette tape devrait se
faire en moins de 5 minutes.
L'option qui nous intresse est un peu cache, il faut aller dans :

Panneau de configuration

Systme

Onglet nom de l'ordinateur

Modifier

Une fois dans cette petite bote de dialogue tout est relativement facile, en haut vous trouverez
une case contenant le nom actuel de l'ordinateur et en bas deux cases avec un bouton radio pour
activer l'une ou l'autre. Il faut activer la case Domaine et dedans vous viendrez saisir le nom
que vous avec donn votre domaine dans la configuration de Samba ( ici EXEMPLE ).
Windows vous demandera alors de saisir des informations d'identification veillez bien saisir un
nom d'utilisateur et un mot de passe ayant les droits administrateurs sur le domaine.
Une fois que Windows vous aura confirm l'entre dans le domaine il vous restera seulement
redmarrer, une fois arriv sur la boite d'ouverture de session Windows vous pourrez constater la
prsence d'une liste de choix en bas, slectionnez le nom du domaine et entrez les informations
d'identification d'un utilisateur du domaine.
Vous voil maintenant avec une station qui peux utiliser les diffrents comptes utilisateurs de
votre base LDAP.

Quelques trucs pouvant aider


Impossible de se connecter en tant que root
Vous avez fait une erreur dans votre configuration PAM ou dans le fichier
<path>/etc/ldap.conf</path> des PAM et/ou NSS ? Pas de panique, vous pouvez peut-tre vous
en sortir sans devoir redmarrer en ajoutant votre annuaire l'objet suivant :
dn: uid=root,ou=Admins,dc=example,dc=com
cn: root
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: root
uidNumber: 0
gidNumber: 0
userPassword:: eMNoen1gVuZerulrbsFdre9PVAJRSIROSL3sS4LESS09
homeDirectory: /root

loginShell: /bin/bash

N'oubliez pas de changer le mot de passe avant l'insertion dans l'annuaire. Cela ne fonctionne
bien videmment que s'il n'a pas t spcifi d'uid minimal dfinissable par LDAP. Sinon, un
reboot en single-user voire un CD de secours s'impose...
Dans ces cas-l, toujours conserver un terminal root dans un coin pour pouvoir modifier la
configuration entre deux tests qui font chouer un su - root ou un ssh root@localhost .
Documentation que vous pourrez retrouver l : Configuration d'un serveur d'authentification
Openldap Samba
Catgories :

SysAdmin

LDAP

Menu de navigation

Se connecter

Page
Discussion

Lire
Voir le texte source
Historique
Lire

Accueil
Catgories serveur

Networking

SysAdmin

Gestion
Catgories workstation

Linux

OSX

Windows
Autres catgories

Multimdia

Dveloppement

Rdaction en cours

Liste des catgories


Outils

Pages lies

Suivi des pages lies

Pages spciales

Adresse de cette version

Information sur la page


Navigation

Modifications rcentes
Imprimer / exporter

Crer un livre

Tlcharger comme PDF

Version imprimable

Dernire modification de cette page le 5 mars 2015 15:31.

Cette page a t consulte 1 497 fois.

Le contenu est disponible sous licence Creative Commons Attribution sauf mention
contraire.

Politique de confidentialit

propos de Wiki Adadov.net

Avertissements