Configuration SAMBA · 8 min read · Oct 06, 2025

Serveur de Répertoire Mandriva sur Debian Etch - Page 2

5 SAMBA

5.1 Configuration de Base

D’abord, arrêtez SAMBA.

/etc/init.d/samba stop

Copiez le fichier de configuration SAMBA exemple dans le répertoire SAMBA …

cp /usr/share/doc/python-mmc-base/contrib/samba/smb.conf /etc/samba/

… et ajustez-le selon vos besoins.

vi /etc/samba/smb.conf

Définissez les valeurs suivantes dans la section [global]:

workgroup = EXAMPLE
netbiosname = PDC-SRV-EXAMPLE
ldap admin dn = cn=admin,dc=example,dc=com
ldap suffix = dc=example,dc=com
logon path = \%N\profiles\%U

Ajoutez les lignes suivantes à la section [global]:

preferred master = yes
os level = 65
wins support = yes
timeserver = yes
socket options = SO_KEEPALIVE IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
logon drive = H:
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = “Changing password for\nNew password“ %n\n “Retype new password“ %n\n
add user script = /usr/sbin/smbldap-useradd -m “%u”
add user to group script = /usr/sbin/smbldap-groupmod -m “%u” “%g”
set primary group script = /usr/sbin/smbldap-usermod -g “%g” “%u”
add group script = /usr/sbin/ambldap-groupadd -p “%g”
delete user script = /usr/sbin/smbldap-userdel “%u”
delete user from group script = /usr/sbin/smbldap-groupmod -x “%u” “%g”
delete group script = /usr/sbin/smbldap-groupdel “%g”
obey pam restrictions = no
ldap idmap suffix = ou=Users
ldap delete dn = yes
security = user

Ajoutez la ligne suivante à la section [homes]:

hide files = /Maildir/

Supprimez la ligne suivante des sections [printers] et [print$]:

printer admin = root,@lpadmin

Définissez les valeurs suivantes dans la section [print$]:

write list = Administrator,root,@lpadmin

Ajoutez la ligne suivante à la section [profiles]:

hide files = /desktop.ini/ntuser.ini/NTUSER.*/

Définissez les valeurs suivantes dans la section [archives]:

path = /home/samba/archives

À ce stade, le fichier de configuration SAMBA devrait ressembler à ceci:

     [global]
        workgroup = EXAMPLE
        netbiosname = PDC-SRV-EXAMPLE
        preferred master = yes
        os level = 65
        wins support = yes
        enable privileges = yes
        timeserver = yes
        socket options = SO_KEEPALIVE IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
        log level = 3
        null passwords = yes
        security = user
        # unix charset = ISO8859-1
        name resolve order = bcast host
        domain logons = yes
        domain master = yes
        printing = cups
        printcap name = cups
        logon path = \\%N\profiles\%U
        logon script = logon.bat
        logon drive = H:
        map acl inherit = yes
        nt acl support = yes
        passdb backend = ldapsam:ldap://127.0.0.1/
        obey pam restrictions = no  

        ldap admin dn = cn=admin,dc=example,dc=com
        ldap suffix = dc=example,dc=com
        ldap group suffix = ou=Groups
        ldap user suffix = ou=Users
        ldap machine suffix = ou=Computers
        ldap idmap suffix = ou=Users
        ldap passwd sync = yes
        ldap delete dn = yes  

        passwd program = /usr/sbin/smbldap-passwd -u %u
        passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n
         
    add user script = /usr/sbin/smbldap-useradd -m "%u"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
        add group script = /usr/sbin/ambldap-groupadd -p "%g"
        add machine script = /usr/lib/mmc/add_machine_script '%u'
        delete user script = /usr/sbin/smbldap-userdel "%u"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
        delete group script = /usr/sbin/smbldap-groupdel "%g"  

     [homes]
        comment = Répertoires personnels
        browseable = no
        writeable = yes
        create mask = 0700
        directory mask = 0700
    hide files = /Maildir/  

     [public]
        comment = Partage public
        path = /home/samba/shares/public
        browseable = yes
        public = yes
        writeable = yes  

     [archives]
        comment = Partage de sauvegarde
        path = /home/samba/archives
        browseable = yes
        public = no
        writeable = no  

     [printers]
        comment = Imprimantes
        path = /tmp
        browseable = no
        public = yes
        guest ok = yes
        writeable = no
        printable = yes  

     [print$]
        comment = Pilotes
        path = /var/lib/samba/printers
        browseable = yes
        guest ok = yes
        read only = yes
        write list = Administrator,root,@lpadmin  

     [netlogon]
        path = /home/samba/netlogon
        public = no
        writeable = no
        browseable = no  

     [profiles]
        path = /home/samba/profiles
        writeable = yes
        create mask = 0700
        directory mask = 0700
        browseable = no
        hide files = /desktop.ini/ntuser.ini/NTUSER.*/  

     [partage]
        comment = aucun
        path = /home/samba/partage
        browseable = yes
        public = no
        writeable = yes

Si tout s’est bien passé, la commande …

testparm

… ne devrait donner aucune erreur.

Maintenant, donnez à SAMBA les identifiants nécessaires pour écrire dans l’LDAP.

smbpasswd -w %ldap_admin_password%

Par exemple:

smbpasswd -w howtoforge

La sortie devrait ressembler à ceci:

Setting stored password for "cn=admin,dc=example,dc=com" in secrets.tdb

Ensuite, vous devez créer un SID pour votre groupe de travail.

net getlocalsid %your_workgroup%

Par exemple:

net getlocalsid EXAMPLE

La sortie devrait ressembler à ceci - notez-le, vous en aurez besoin dans quelques instants:

SID for domain EXAMPLE is: S-1-5-21-3159899821-123882392-54881133

Vérifiez si le SID a vraiment été enregistré dans l’LDAP.

slapcat | grep sambaDomainName

La sortie devrait ressembler à ceci:

dn: sambaDomainName=EXAMPLE,dc=example,dc=com  
sambaDomainName: EXAMPLE

Maintenant, démarrez SAMBA

/etc/init.d/samba start

5.2 Annuaire LDAP

D’abord, vous devez créer le fichier de configuration smbldap-tools - il définit comment communiquer avec le serveur LDAP.

vi /etc/smbldap-tools/smbldap_bind.conf

Le contenu devrait ressembler à ceci:

slaveDN="cn=admin,dc=example,dc=com"
slavePw="howtoforge"
masterDN="cn=admin,dc=example,dc=com"
masterPw="howtoforge"

Maintenant, créez le fichier de configuration principal.

vi /etc/smbldap-tools/smbldap.conf

Le contenu devrait ressembler à ceci (Remplacez le SID par le vôtre !):

SID="S-1-5-21-3159899821-123882392-54881133"
sambaDomain="EXAMPLE"
ldapTLS="0"
suffix="dc=example,dc=com"
usersdn="ou=Users,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=EXAMPLE,${suffix}"
scope="sub"
hash_encrypt="SSHA"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome="\\PDC-SRV-EXAMPLE\%U"
userProfile="\\PDC-SRV-EXAMPLE\profiles\%U"
userHomeDrive="H:"
userScript="logon.bat"
mailDomain="example.com"
smbpasswd="/usr/bin/smbpasswd"

Il est temps de peupler l’annuaire LDAP. Cela créera également le compte administrateur de domaine (Administrator)

smbldap-populate -m 512 -a Administrator

Remarque: Vous serez invité à entrer un mot de passe pour le compte administrateur de domaine.

Ensuite, vous devez modifier le numéro uid pour ce compte - sinon vous ne pourrez pas utiliser le serveur de messagerie avec ce compte. De plus, nous ajoutons ce compte au groupe “Domain Users” :

smbldap-usermod -u 3000 -G "Domain Users" Administrator

5.3 Configuration NSS LDAP

Dans cette étape, nous configurons le système pour utiliser l’annuaire LDAP afin d’obtenir des listes d’utilisateurs et de groupes.

Éditez la configuration nsswitch.

vi /etc/nsswitch.conf

Le contenu devrait ressembler à ceci:

# /etc/nsswitch.conf
#
# Exemple de configuration de la fonctionnalité GNU Name Service Switch.
# Si vous avez les paquets `glibc-doc' et `info' installés, essayez:
# `info libc "Name Service Switch"' pour des informations sur ce fichier.
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

5.4 Répertoires SAMBA

Créez les répertoires nécessaires pour le serveur SAMBA, …

mkdir -p /home/samba/shares/public/  
mkdir /home/samba/netlogon/  
mkdir /home/samba/profiles/  
mkdir /home/samba/partage/  
mkdir /home/samba/archives/

… changez la propriété et ajustez les droits.

chown -R :"Domain Users" /home/samba/  
chmod 777 /var/spool/samba/ /home/samba/shares/public/  
chmod 755 /home/samba/netlogon/  
chmod 770 /home/samba/profiles/ /home/samba/partage/  
chmod 700 /home/samba/archives/

6 Configuration PAM LDAP

Dans cette étape, vous ajouterez le support LDAP à PAM.

vi /etc/pam.d/common-account

Le contenu devrait ressembler à ceci:

#
# /etc/pam.d/common-account - paramètres d'autorisation communs à tous les services
#
# Ce fichier est inclus à partir d'autres fichiers de configuration PAM spécifiques aux services,
# et devrait contenir une liste des modules d'autorisation qui définissent
# la politique d'accès centrale à utiliser sur le système.  La valeur par défaut est de
# seulement refuser le service aux utilisateurs dont les comptes sont expirés dans /etc/shadow.
#
account required        pam_unix.so
account sufficient      pam_ldap.so
vi /etc/pam.d/common-auth

Le contenu devrait ressembler à ceci:

#
# /etc/pam.d/common-auth - paramètres d'authentification communs à tous les services
#
# Ce fichier est inclus à partir d'autres fichiers de configuration PAM spécifiques aux services,
# et devrait contenir une liste des modules d'authentification qui définissent
# le schéma d'authentification central à utiliser sur le système
# (par exemple, /etc/shadow, LDAP, Kerberos, etc.).  La valeur par défaut est d'utiliser les
# mécanismes d'authentification Unix traditionnels.
#
auth    sufficient      pam_unix.so nullok_secure
auth    sufficient      pam_ldap.so use_first_pass
auth    required        pam_deny.so
vi /etc/pam.d/common-password

Le contenu devrait ressembler à ceci:

#
# /etc/pam.d/common-password - modules liés aux mots de passe communs à tous les services
#
# Ce fichier est inclus à partir d'autres fichiers de configuration PAM spécifiques aux services,
# et devrait contenir une liste de modules qui définissent les services à
# utiliser pour changer les mots de passe des utilisateurs.  La valeur par défaut est pam_unix
# L'option "nullok" permet aux utilisateurs de changer un mot de passe vide, sinon
# les mots de passe vides sont traités comme des comptes verrouillés.
#
# (Ajoutez `md5' après le nom du module pour activer les mots de passe MD5)
#
# L'option "obscure" remplace l'ancienne option `OBSCURE_CHECKS_ENAB' dans
# login.defs. De plus, les options "min" et "max" imposent la longueur du
# nouveau mot de passe.
password        sufficient      pam_unix.so nullok obscure min=4 max=8 md5
password        sufficient      pam_ldap.so use_first_pass use_authtok
password        required        pam_deny.so
# Vérification de force alternative pour le mot de passe. Notez que cela
# nécessite que le paquet libpam-cracklib soit installé.
# Vous devrez commenter la ligne de mot de passe ci-dessus et
# décommenter les deux suivantes pour l'utiliser.
# (Remplace les `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH')
#
# password required       pam_cracklib.so retry=3 minlen=6 difok=3
# password required       pam_unix.so use_authtok nullok md5
vi /etc/pam.d/common-session

Le contenu devrait ressembler à ceci:

#
# /etc/pam.d/common-session - modules liés aux sessions communs à tous les services
#
# Ce fichier est inclus à partir d'autres fichiers de configuration PAM spécifiques aux services,
# et devrait contenir une liste de modules qui définissent les tâches à effectuer
# au début et à la fin des sessions de *tous* types (à la fois interactives et
# non interactives).  La valeur par défaut est pam_unix.
#
session required        pam_unix.so
session optional        pam_ldap.so

Ensuite, redémarrez le système.

reboot

Lorsque le système sera à nouveau opérationnel, donnez au groupe “Domain Admins” le droit d’ajouter des machines au domaine.

net -U Administrator rpc rights grant 'DOMAIN\Domain Admins' SeMachineAccountPrivilege

7 SSL Pour Mail

D’abord, préparez un fichier de configuration avec les informations nécessaires.

vi /etc/ssl/mail.cnf

Ajoutez le contenu suivant:

[ req ] 
default_bits            = 2048 
default_keyfile         = privkey.pem 
distinguished_name      = req_distinguished_name 
prompt                  = no 
string_mask             = nombstr 
x509_extensions         = server_cert
[ req_distinguished_name ] 
countryName             = DE 
stateOrProvinceName     = Niedersachsen
localityName            = Lueneburg
organizationName        = Projektfarm GmbH
organizationalUnitName  = IT
commonName              = server1.example.com
emailAddress            = [email protected]
[ server_cert ] 
basicConstraints        = critical, CA:FALSE 
subjectKeyIdentifier    = hash 
keyUsage                = digitalSignature, keyEncipherment 
extendedKeyUsage        = serverAuth, clientAuth 
nsCertType              = server 
nsComment               = "mailserver"

Maintenant, créez le certificat SSL …

openssl req -x509 -new -config /etc/ssl/mail.cnf -out /etc/ssl/certs/mail.pem -keyout /etc/ssl/private/mail.key -days 365 -nodes -batch

… et ajustez les droits pour que seul root puisse le lire.

chmod 600 /etc/ssl/private/mail.key
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.