Samba Installation · 8 min read · Dec 09, 2025
Installation du contrôleur de domaine Samba 4 sur CentOS 7
À partir de la version 4.0, Samba peut fonctionner en tant que contrôleur de domaine (DC) Active Directory (AD). Dans ce tutoriel, je vais vous montrer comment configurer Samba 4 en tant que contrôleur de domaine avec Windows 10, CentOS 7 et des clients CentOS 6.
Dans ce tutoriel, je vais compiler Samba 4 à partir de la source. Si vous recherchez une installation basée sur RPM de Samba 4 et une configuration SELinux pour Samba 4, veuillez consulter mon nouveau tutoriel Samba 4 ici.
J’utiliserai 3 systèmes, un serveur CentOS 7 et un client Windows 10 pour la gestion à distance, un client CentOS 7 et un client CentOS 6.
- 192.168.1.190 Samba4 AD centos7
- 192.168.1.191 gestion à distance win 10
- 192.168.1.22 - client Authentification - centos 7
- 192.168.1.192 - client Authentification - centos 6
Installation de Samba 4
192.168.1.190 Samba4 AD centos 7
La base est un CentOS 7 avec une installation minimale et SELinux désactivé.
[root@samba4 ~]# sestatus
Statut de SELinux : désactivé
[root@samba4 ~]#
Faites une entrée dans le fichier /etc/hosts.
[root@samba4 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.190 samba4.sunil.cc samba4
[root@samba4 ~]#
Installez le dépôt epel.
[root@samba4 ~]# yum install epel-release -yInstallez tous les paquets nécessaires pour compiler samba4.
[root@samba4 ~]# yum install perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins\
policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel\
cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget -yTéléchargez maintenant le paquet samba4. J’utilise samba-4.6.0 qui est le dernier lors de cette configuration.
[root@samba4 ~]# wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gzMaintenant, installons samba4.
[root@samba4 ~]# tar -zxvf samba-4.6.0.tar.gz
[root@samba4 ~]# cd samba-4.6.0
[root@samba4 samba-4.6.0]# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind
[root@samba4 samba-4.6.0]# make && make install
L’installation prendra environ 10 minutes selon la vitesse du système.
Nous allons maintenant procéder à la provision du domaine.
[root@samba4 samba]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
Domaine [SUNIL]:
Rôle du serveur (dc, membre, autonome) [dc]: dc
Backend DNS (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Adresse IP du renvoyeur DNS (écrivez 'none' pour désactiver le renvoi) [4.2.2.1]:
Mot de passe Administrateur:
Retaper le mot de passe:
Recherche des adresses IPv4
Recherche des adresses IPv6
Aucune adresse IPv6 ne sera attribuée
Configuration de share.ldb
Configuration de secrets.ldb
Configuration du registre
Configuration de la base de données des privilèges
Configuration de la base de données idmap
Configuration de la base de données SAM
Configuration des partitions et des paramètres sam.ldb
Configuration de sam.ldb rootDSE
Pré-chargement du schéma Samba 4 et AD
Ajout de DomainDN: DC=sunil,DC=cc
Ajout du conteneur de configuration
Configuration du schéma sam.ldb
Configuration des données de configuration sam.ldb
Configuration des spécificateurs d'affichage
Modification des spécificateurs d'affichage
Ajout du conteneur d'utilisateurs
Modification du conteneur d'utilisateurs
Ajout du conteneur d'ordinateurs
Modification du conteneur d'ordinateurs
Configuration des données sam.ldb
Configuration des principaux de sécurité bien connus
Configuration des utilisateurs et groupes sam.ldb
ERROR(ldb): exception non interceptée - erreur d'opération à ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", ligne 176, dans _run
return self.run(*args, **kwargs)
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", ligne 471, dans run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", ligne 2175, dans provision
skip_sysvolacl=skip_sysvolacl)
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", ligne 1787, dans provision_fill
next_rid=next_rid, dc_rid=dc_rid)
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", ligne 1447, dans fill_samdb
"KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", ligne 55, dans setup_add_ldif
ldb.add_ldif(data, controls)
Fichier "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", ligne 225, dans add_ldif
self.add(msg, controls)
[root@samba4 samba]#Il y aura quelques erreurs lorsque nous ferons la provision du domaine.
Pour les corriger, veuillez commenter la ligne ci-dessous dans /etc/krb5.conf.
--------
#includedir /etc/krb5.conf.d/
--------Exécutez à nouveau la provision du domaine et maintenant le domaine sera créé sans erreurs.
[root@samba4 etc]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SUNIL.CC]:
Domaine [SUNIL]:
Rôle du serveur (dc, membre, autonome) [dc]:
Backend DNS (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Adresse IP du renvoyeur DNS (écrivez 'none' pour désactiver le renvoi) [4.2.2.1]:
Mot de passe Administrateur:
Retaper le mot de passe:
Recherche des adresses IPv4
Recherche des adresses IPv6
Aucune adresse IPv6 ne sera attribuée
Configuration de secrets.ldb
Configuration du registre
Configuration de la base de données des privilèges
Configuration de la base de données idmap
Configuration de la base de données SAM
Configuration des partitions et des paramètres sam.ldb
Configuration de sam.ldb rootDSE
Pré-chargement du schéma Samba 4 et AD
Ajout de DomainDN: DC=sunil,DC=cc
Ajout du conteneur de configuration
Configuration du schéma sam.ldb
Configuration des données de configuration sam.ldb
Configuration des spécificateurs d'affichage
Modification des spécificateurs d'affichage
Ajout du conteneur d'utilisateurs
Modification du conteneur d'utilisateurs
Ajout du conteneur d'ordinateurs
Modification du conteneur d'ordinateurs
Configuration des données sam.ldb
Configuration des principaux de sécurité bien connus
Configuration des utilisateurs et groupes sam.ldb
Configuration de l'auto-jointure
Ajout des comptes DNS
Création de CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc
Création des partitions DomainDnsZones et ForestDnsZones
Remplissage des partitions DomainDnsZones et ForestDnsZones
Configuration de sam.ldb rootDSE marquée comme synchronisée
Correction des GUIDs de provision
Une configuration Kerberos adaptée à Samba AD a été générée à /usr/local/samba/private/krb5.conf
Configuration des paramètres de serveur yp factices
Une fois les fichiers ci-dessus installés, votre serveur Samba4 sera prêt à l'emploi
Rôle du serveur : contrôleur de domaine Active Directory
Nom d'hôte : samba4
Domaine NetBIOS : SUNIL
Domaine DNS : sunil.cc
DOMAIN SID : S-1-5-21-2936486394-2075362935-551615353
[root@samba4 etc]#
Assurez-vous que les ports sont ouverts dans le pare-feu.
[root@samba4 etc]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent;
firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent;
firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent;
firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent;
firewall-cmd --add-port=1024-5000/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent
[root@samba4 ~]# firewall-cmd --reload
Créez un script de démarrage pour démarrer automatiquement le service lors du redémarrage.
[root@samba4 ~]# cat /etc/systemd/system/samba.service
[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba
[Install]
WantedBy=multi-user.target
[root@samba4 ~]#
[root@samba4 ~]# systemctl enable samba
Créé un lien symbolique de /etc/systemd/system/multi-user.target.wants/samba.service à /etc/systemd/system/samba.service.
[root@samba4 ~]# systemctl start samba
Ajout de l’hôte Windows au domaine
192.168.1.191 gestion à distance win 10
Assurez-vous que l’hôte est ajouté avec une adresse IP statique.

Ajout de l’hôte au domaine.




Pour gérer Samba4 depuis Windows, nous devons avoir les outils Microsoft Remote Server (RSAT) installés.
La page wiki a les liens https://wiki.samba.org/index.php/Installing_RSAT
Installation de l’outil RSAT dans Windows 10
Exécutez l’installateur.




Après le redémarrage, allez dans exécuter et tapez dsa.msc

Cliquez sur le domaine sunil.cc et faites un clic droit sur nouveau -> Utilisateurs.

Création d’un utilisateur de test.


Authentification du client avec Samba 4 sur CentOS 7
192.168.1.22 - client Authentification sur CentOS 7
Installation des paquets :
[root@centos7 ~]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-commonVérifiez la connectivité avec samba4 :
[root@centos7 ~]# realm discover SUNIL.CC
sunil.cc
type: kerberos
realm-name: SUNIL.CC
domain-name: sunil.cc
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common-tools
login-formats: %U
login-policy: allow-realm-logins
[root@centos7 ~]#
Rejoindre le domaine.
[root@centos7 ~]# realm join SUNIL.CC
Mot de passe pour Administrator:
[root@centos7 ~]#
Vérifiez si nous pouvons obtenir l’utilisateur de samba4.
[root@centos7 ~]# id SUNIL\testuser
uid=1570001104([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected])
[root@centos7 ~]#
Configurez sssd.
[root@centos7 ~]# cat /etc/sssd/sssd.conf
[sssd]
domains = sunil.cc
config_file_version = 2
services = nss, pam
[domain/sunil.cc]
ad_domain = sunil.cc
krb5_realm = SUNIL.CC
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
[root@centos7 ~]#
Redémarrez sssd.
[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# systemctl enable sssd
Vérifiez l’utilisateur.
[root@centos7 ~]# id [email protected]
uid=1570001105([email protected]) gid=1570000513(domain [email protected]) groups=1570000513(domain [email protected]),1570000512(domain [email protected]),1570000572(denied rodc password replication [email protected])
[root@centos7 ~]#
Pour obtenir l’utilisateur sans nom de domaine.
[root@centos7 ~]# vim /etc/sssd/sssd.conf
-----------
------------
use_fully_qualified_names = False
-----------
-----------
Redémarrez sssd et vérifiez la commande id.
[root@centos7 ~]# systemctl restart sssd
[root@centos7 ~]# id sambauser
uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)
[root@centos7 ~]#
Authentification du client avec Samba 4 sur CentOS 6
192.168.1.192 - client Authentification sur CentOS 6.
Installation des paquets.
[root@centos6 db]# yum install pam pam_ldap pam_krb5 sssd sssd-ldap sssd-common authconfig oddjob oddjob-mkhomedir openldap openldap-clients krb5-workstation adcli -y
Changez le fichier de configuration kerberos.
[root@centos6 db]# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = SUNIL.CC
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
SUNIL.CC = {
kdc = samba4.sunil.cc
admin_server = samba4.sunil.cc
}
[domain_realm]
.sunil.cc = SUNIL.CC
sunil.cc = SUNIL.CC
[root@centos6 db]#
Nous utiliserons la commande adcli pour rejoindre le domaine.
[root@centos6 db]# adcli info sunil.cc
[domain]
domain-name = sunil.cc
domain-short = SUNIL
domain-forest = sunil.cc
domain-controller = samba4.sunil.cc
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret
domain-controller-usable = yes
domain-controllers = samba4.sunil.cc
[computer]
computer-site = Default-First-Site-Name
[root@centos6 db]#
[root@centos6 db]# adcli join sunil.cc
Mot de passe pour [email protected]:
[root@centos6 db]#
Assurez-vous que le ticket kerberos est créé.
[root@centos6 db]# klist -ke
Configurez l’authentification.
[root@centos6 db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Modifiez maintenant la configuration sssd pour effectuer l’authentification.
[root@centos6 db]# cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam, ssh, autofs
config_file_version = 2
domains = sunil.cc
[domain/sunil.cc]
id_provider = ad
# Décommentez si la découverte de service ne fonctionne pas
# ad_server = server.win.example.com
default_shell = /bin/bash
fallback_homedir = /home/%u
[root@centos6 db]#
Redémarrez le service sssd.
[root@centos6 db]# chkconfig sssd on
[root@centos6 db]# service sssd restart
Arrêt de sssd : [ OK ]
Démarrage de sssd : [ OK ]
[root@centos6 db]#
Validation de l’utilisateur.
[root@centos6 db]# id sambauser
uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)
[root@centos6 db]#
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.