Ce tutoriel fonctionne sur les distributions suivantes:
Debian SID
Debian Sarge
Debian Etch
.......
Ce guide a été fait avec une Debian Etch. (personnellement)
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 à « Élevé ». 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 » voir à « basse » pour controler un maximum.
Pour cela tapez en root : # dpkg-reconfigure debconf
Choisissez "Dialogue" puis « Intermédiaire » ou « basse »
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.
Une
autre astuce étant de faire des réservations DHCP...
Dans notre cas le serveur samba et le serveur OpenLDAP se trouvent sur le méme PC.
Le paquet slapd contient la partie serveur d'openLDAP :
apt-get 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 !!)
Car au nom FQDN: domaine.local correspondra le Workgroup: domaine.
Un peu comme le préconise Microsoft lors de la configuration d'un Active Directory.
http://e-novatic.fr/blog/index.php/post/2007/09/11/Bien-configurer-son-Active-Directory
http://www.laboratoire-microsoft.org/articles/win/startad/3/Default.asp
Nom de votre organisation: représente la visibilité de votre annuaire ! Chez moi par exemple dom-sln.local.
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
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:
apt-get 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
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;
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
On installe le paquet samba (le serveur) et des outils pour le client:
apt-get install samba smbclient smbfs
Répondez à debconf en laissant tout par défaut, de toute façon on fera notre propre fichier de configuration.
Le fichier de configuration du serveur SAMBA est : /etc/samba/smb.conf
Supprimez tout le contenu et copiez toutes ces lignes:
# Samba config file created using SWAT
# from 127.0.1.1 (127.0.1.1)
# Date: 2008/06/15 07:55:18
[global]
display charset = ISO8859-1
unix charset = ISO8859-1
dos charset = 850
workgroup = DOMAIN
realm = DOMAIN.LOCAL
netbios name = debian
server string = Domain DOMAIN PDC
security = DOMAIN
passdb backend = ldapsam:ldap://127.0.0.1/
passwd program = /usr/bin/smbpasswd %u
username map = /etc/samba/smbusers
unix password sync = Yes
log level = 3
syslog = 3
log file = /var/log/samba/log.%m
max log size = 1000
announce version = 5.0
name resolve order = wins lmhosts bcast
server signing = Yes
keepalive = 5
socket options = TCP_NODELAY SO_SNDBUF=819200 SO_RCVBUF=819200
ldap admin dn = cn=admin,dc=DOMAIN,dc=local
ldap delete dn = Yes
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap machine suffix = ou=Computers
ldap suffix = dc=DOMAIN,dc=local
ldap ssl = no
ldap user suffix = ou=Users
idmap backend = dc=DOMAIN,dc=local
idmap uid = 500-10000000
idmap gid = 500-10000000
add user script = /usr/sbin/smbldap-useradd -a -m -G "Domain Users" "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%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"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
logon script = %u.bat
logon path = \\%L\profiles\%u
logon drive = H:
logon home = \\%L\homes\%u
domain logons = Yes
os level = 95
preferred master = Yes
domain master = Yes
eventlog list = Security, Application, Syslog, Apache
message command = /bin/sh -c '/usr/bin/linpopup
panic action = /usr/share/samba/panic-action %d
winbind enum users = yes
winbind enum groups = yes
hide unreadable = Yes
#interfaces = 192.168. 10.0 127.0.0.1
printcap name = cups
printing = cups
[homes]
comment = Home Directories
path = /home/%u
read only = No
locking = No
share modes = No
[netlogon]
comment = Network Logon Service
path = /home/netlogon
locking = No
share modes = No
[profiles]
comment = User Profiles
path = /home/profiles
read only = No
create mask = 0660
directory mask = 0770
profile acls = Yes
browseable = No
locking = No
root preexec = mkdir -m 770 /home/"%U" && mkdir -m 770 /home/"%U"/test && mkdir -m 770 /home/"%U"/bin && mkdir -m 770 /home/"%U"/Desktop && mkdir -m 770 /home/"%U"/"Mes Documents"
root postexec = chown -R "%u:Domain Users" /home/"%u"/
[profiles.V2]
copy = profiles
# Defining printers
####################################################
[print$]
path = /var/lib/samba/drivers/
guest ok = No
browseable = Yes
read only = Yes
valid users = @"Print Operators"
write list = @"Print Operators"
create mask = 0664
directory mask = 0775
[printers]
comment = All Printers
path = /var/spool/samba
available = yes
printable = Yes
browseable = Yes
locking = No
share modes = Yes
use client driver = no
[pdf-documents]
comment = Converted PDF Documents
path = /home/pdf-documents
read only = No
available = yes
browseable = yes
guest ok = yes
public = yes
writable = yes
valid users = @"Domain Users"
[pdf-printer]
comment = PDF Printer Service
path = /tmp
guest ok = Yes
printable = Yes
use client driver = Yes
use client driver = yes
printing = bsd
print command = /usr/bin/gsambadpdf %s %u
lpq command =
lprm command =
valid users = @"Domain Users"
[Drivers]
comment = Drivers
path = /var/lib/samba/printers/
read only = Yes
guest ok = Yes
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[GPO]
comment = Strategies de groupe
path = /home/gpo
available = yes
invalid users = root
valid users = @"Domain Admins"
browseable = No
root preexec = /etc/samba/script/createGPO --win_user=%U --win_group=%G --ip=%I --os_type=%a --win_host=%m --share=/home/gpo
[Partage]
comment = Partage
path = /home/lolo/Partage
read only = No
guest ok = Yes
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Ma Musique]
comment = Ma Musique
path = /home/lolo/Ma Musique
read only = No
guest ok = Yes
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Account Operators]
comment = Account Operators
path = /home/groups/Account Operators
read only = No
locking = No
share modes = No
valid users = @"Account Operators"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Administrators]
comment = Administrators
path = /home/groups/Administrators
read only = No
locking = No
share modes = No
valid users = @"Administrators"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Domain Admins]
comment = Domain Admins
path = /home/groups/Domain Admins
read only = No
locking = No
share modes = No
valid users = @"Domain Admins"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Domain Users]
comment = Domain Users
path = /home/groups/Domain Users
read only = No
locking = No
share modes = No
valid users = @"Domain Users"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Domain Computers]
comment = Domain Computers
path = /home/groups/Domain Computers
read only = No
locking = No
share modes = No
valid users = @"Domain Computers"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Domain Guests]
comment = Domain Guests
path = /home/groups/Domain Guests
read only = No
locking = No
share modes = No
valid users = lolo
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Print Operators]
comment = Print Operators
path = /home/groups/Print Operators
read only = No
locking = No
share modes = No
valid users = @"Print Operators"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Backup Operators]
comment = Backup Operators
path = /home/groups/Backup Operators
read only = No
locking = No
share modes = No
valid users = @"Backup Operators"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.ppt
[Replicators]
comment = Replicators
path = /home/groups/Replicators
read only = No
locking = No
share modes = No
valid users = @"Replicators"
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:exclude = ?~$*,~$*,*.tmp,index*.pl,index*.htm*,*.temp,*.TMP
recycle:exclude_dir= /tmp,/temp,/cache
recycle:repository = .recycle/.recycle.%u
recycle:noversions = *.doc,*.xls,*.pptVous 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
Voir mon fichier smb.html
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/profiles On donne les droits aux répertoires: chmod a+w /home/profiles
Le paquet smbldap-tools contient plusieurs scripts facilitant l'administration
apt-get install smbldap-tools
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
Éditez ou créez le fichier /etc/smbldap-tools/smbldap.conf et copiez ceci:
##############################################################################
#
# General Configuration
#
##############################################################################
# Put your own SID. To obtain this number do: "net getlocalsid".
# If not defined, parameter is taking from "net getlocalsid" return
SID="S-1-5-21-2955114329-942759136-1117618233"
# Domain name the Samba server is in charged.
# If not defined, parameter is taking from smb.conf configuration file
# Ex: sambaDomain="DOMAIN"
sambaDomain="DOMAIN"
##############################################################################
#
# LDAP Configuration
#
##############################################################################
# Notes: to use to dual ldap servers backend for Samba, you must patch
# Samba with the dual-head patch from IDEALX. If not using this patch
# just use the same server for slaveLDAP and masterLDAP.
# Those two servers declarations can also be used when you have
# . one master LDAP server where all writing operations must be done
# . one slave LDAP server where all reading operations must be done
# (typically a replication directory)
# Slave LDAP server
# Ex: slaveLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
slaveLDAP="127.0.0.1"
# Slave LDAP port
# If not defined, parameter is set to "389"
slavePort="389"
# Master LDAP server: needed for write operations
# Ex: masterLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
masterLDAP="127.0.0.1"
# Master LDAP port
# If not defined, parameter is set to "389"
masterPort="389"
# Use TLS for LDAP
# If set to 1, this option will use start_tls for connection
# (you should also used the port 389)
# If not defined, parameter is set to "1"
ldapTLS="0"
# How to verify the server's certificate (none, optional or require)
# see "man Net::LDAP" in start_tls section for more details
verify="require"
# CA certificate
# see "man Net::LDAP" in start_tls section for more details
#cafile="/etc/opt/IDEALX/smbldap-tools/ca.pem"
# certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
#clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.pem"
# key certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
#clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.key"
# LDAP Suffix
# Ex: suffix=dc=DOMAIN,dc=local
suffix="dc=DOMAIN,dc=local"
# Where are stored Users
# Ex: usersdn="ou=Users,dc=DOMAIN,dc=local"
# Warning: if 'suffix' is not set here, you must set the full dn for usersdn
usersdn="ou=Users,${suffix}"
# Where are stored Computers
# Ex: computersdn="ou=Computers,dc=DOMAIN,dc=local"
# Warning: if 'suffix' is not set here, you must set the full dn for computersdn
computersdn="ou=Computers,${suffix}"
# Where are stored Groups
# Ex: groupsdn="ou=Groups,dc=DOMAIN,dc=local"
# Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
groupsdn="ou=Groups,${suffix}"
# Where are stored Idmap entries (used if samba is a domain member server)
# Ex: groupsdn="ou=Idmap,dc=DOMAIN,dc=local"
# Warning: if 'suffix' is not set here, you must set the full dn for idmapdn
idmapdn="ou=Idmap,${suffix}"
# Where to store next uidNumber and gidNumber available for new users and groups
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=DOMAIN,${suffix}"
# Default scope Used
scope="sub"
# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="SSHA"
# if hash_encrypt is set to CRYPT, you may set a salt format.
# default is "%s", but many systems will generate MD5 hashed
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"
##############################################################################
#
# Unix Accounts Configuration
#
##############################################################################
# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/bash"
# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"
# Default mode used for user homeDirectory
userHomeDirectoryMode="700"
# Gecos
userGecos="System User"
# Default User (POSIX and Samba) GID
defaultUserGid="513"
# Default Computer (Samba) GID
defaultComputerGid="515"
# Skel dir
skeletonDir="/etc/skel"
# Default password validation time (time in days) Comment the next line if
# you don't want password to be enable for defaultMaxPasswordAge days (be
# careful to the sambaPwdMustChange attribute's value)
defaultMaxPasswordAge="45"
##############################################################################
#
# SAMBA Configuration
#
##############################################################################
# The UNC path to home drives location (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon home'
# directive and/or disable roaming profiles
# Ex: userSmbHome="\\PDC-SMB3\%U"
userSmbHome="\\debian\%U"
# The UNC path to profiles locations (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon path'
# directive and/or disable roaming profiles
# Ex: userProfile="\\PDC-SMB3\profiles\%U"
userProfile="\\debian\profiles\%U"
# The default Home Drive Letter mapping
# (will be automatically mapped at logon time if home directory exist)
# Ex: userHomeDrive="H:"
userHomeDrive="H:"
# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# make sure script file is edited under dos
# Ex: userScript="startup.cmd" # make sure script file is edited under dos
userScript="%U.bat"
# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
# Ex: mailDomain="DOMAIN.local"
mailDomain="DOMAIN.local"
##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################
# Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
# prefer Crypt::SmbHash library
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
# Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
# but prefer Crypt:: libraries
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
# comment out the following line to get rid of the default banner
# no_banner="1"Vous devez changer:
suffix="dc=.........,dc=......"
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
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 !
Vous pouvez donc changer la valeur dans /etc/smbldap-tools/smbldap.conf
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 la 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.
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. Or sur la machine elle méme le but n'étant pas d'authentifier les utilisateurs locaux de la machine par LDAP, cette partie n'est pas nécessaire. Si toute fois vous désirez l'implémenter veuillez vous reporter à : http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP#Authentification_Unix : 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
On ajoute un module à NSS qui lui permet d'interroger notre annuaire LDAP
apt-get 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
Vérifiez que dans /etc/libnss-ldap.conf vos paramétres sont corrects.
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
De même, on installe le module LDAP pour PAM:
apt-get 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/
Il suffit d'indiquer maintenant au système d'aller interroger notre annuaire LDAP
nano /etc/nsswitch.conf
Il vous suffit de rajouter après compat la directive 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) !!
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
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: Choisissez 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 XP/2003 est stocké sur le serveur Linux dans /home/profiles/ chaque utilisateur possède son répertoire $LOGIN.
Votre profile Windows 2008 Serveur/Vista est stocké sur le serveur Linux dans /home/profiles/ chaque utilisateur possède son répertoire $LOGIN.V2. V2 pour différencier le profile avant et après Vista. Sachant que Vista cherche un partage profiles.v2, c'est pourquoi nous avons créé un :
[profiles.V2]
copy = profilesIls contient les éléments de votre bureau, le répertoire "Mes Documents", les fichiers de configuration des applications (Firefox, Thunderbird....).
ATTENTION : Si vous avez des scripts de logon, pensez à ajouter vos comptes aux groupes voulus : smbldap-groupmod -m $USER "$GROUP1 , $GROUP2"
Si vous avez des clients Linux avec les quels vous ne désirez pas créer de compte en local suivez la méthode dans 5 Authentification Unix , puis http://www.e-glop.net/main/GDM-LDAP-Ubuntu.
Car GDM ou KDM utilisant /etc/pam.d/ pour chercher les logins il advient qu'à la connexion de session :
Login Failed !
La solution se situe dans la modification des pam.d :
Pour faire fonctionner GDM/KDM, voici comment paramétrer l'authentification PAM :
$ cat /etc/pam.d/common-account account sufficient pam_ldap.so account required pam_unix.so $ cat /etc/pam.d/common-auth auth sufficient pam_ldap.so auth required pam_unix.so use_first_pass nullok_secure $ cat /etc/pam.d/common-password password sufficient pam_ldap.so md5 password required pam_unix.so nullok obscure min=4 max=8 md5 $ cat /etc/pam.d/common-session session required pam_mkhomedir.so skel=/etc/skel session sufficient pam_ldap.so session required pam_unix.so $ cat /etc/pam.d/kdm session required pam_mkhomedir.so skel=/etc/skel auth required pam_nologin.so auth required pam_env.so readenv=1 auth required pam_env.so readenv=1 envfile=/etc/default/locale @include common-auth session required pam_limits.so @include common-account @include common-password @include common-session $ cat /etc/pam.d/login # A mettre au tout début du fichier session required pam_mkhomedir.so skel=/etc/skel
session required pam_mkhomedir.so skel=/etc/skel :
Permet de créer le répertoire personnel /home/$USER sur le client Linux. Dans smb.conf est ajouté dans profiles :
root preexec = mkdir -m 770 /home/"%U" && mkdir -m 770 /home/"%U"/test && mkdir -m 770 /home/"%U"/bin && mkdir -m 770 /home/"%U"/Desktop && mkdir -m 770 /home/"%U"/"Mes Documents" root postexec = chown -R "%u:Domain Users" /home/"%u"/
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
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 annuaire LDAP.
Installation
apt-get install phpldapadmin
On ouvre un navigateur internet:
http://adresseipduserveur/phpldapadmin
Login DN
cn=admin,dc=domaine,dc=local
Password
votre mot de passe
Apache Directory Studio vous permet de manipuler et de visualiser facilement les éléments de votre annuaire LDAP.
http://directory.apache.org/studio/downloads.html
Derniére modification de cette page le 22 septembre 2008 à 18:30.
Contenu disponible sous GNU Free Documentation License 1.2.