Samba est utilisé par sysadmin pour surmonter le problème d'interopérabilité dans un environnement mixte où vous avez à la fois Linux et Windows. Il fournit une plate-forme commune pour Windows et Linux afin d'avoir un espace de partage commun.
Le contrôleur de domaine est un service utilisé pour l'administration centralisée des utilisateurs, des groupes ou de tout objet du réseau. Ce service nous permet de gérer, d'authentifier et de sécuriser la connexion des utilisateurs et les données associées.
Ce tutoriel explique comment nous pouvons configurer Samba sur Linux en tant que contrôleur de domaine principal.
1. Configurer le nom d'hôte approprié
Assurez-vous d'avoir configuré le nom d'hôte et l'adresse IP statique appropriés. Si vous utilisez une adresse IP interne et si vous souhaitez y accéder depuis Internet, configurez les règles NAT appropriées sur votre pare-feu.
Dans ce didacticiel, nous utiliserons tgs.example.com comme nom d'hôte.
# vi /etc/sysconfig/network HOSTNAME=tgs.example.com
Assurez-vous qu'il dispose d'une configuration d'adresse IP statique appropriée dans le fichier ifcfg-eth0.
# vi /etc/sysconfig/network-script/ifcfg-eth0 IPADDR=192.168.101.1 NETMASK=255.255.255.0
Attribuez également la passerelle et le DNS en conséquence dans vos fichiers /etc/sysconfig/network et /etc/resolv.conf.
Vérifiez que votre fichier /etc/hosts contient une entrée similaire à la suivante.
# vi /etc/hosts 192.168.101.1 tgs.example.com tgs
Assurez-vous également que le service NTP est configuré et fonctionne correctement sur ce serveur.
2. Installer Samba à partir de la source
Sur CentOS, les packages samba par défaut ne seront pas installés pour le type d'installation minimale.
Tout d'abord, installez les packages dépendants suivants.
# yum install glibc glibc-devel gcc python* libacl-devel krb5-workstation krb5-libs pam_krb5 git-core openldap-devel
Ensuite, téléchargez la source samba comme indiqué ci-dessous.
# git clone git://git.samba.org/samba.git sambaserver
Les fichiers seront téléchargés dans le répertoire sambaserver. Installez le serveur samba comme indiqué ci-dessous.
cd sambaserver ./configure --enable-debug --enable-selftest make make install
Samba sera installé à l'emplacement par défaut /usr/local/samba/bin. Vous verrez plusieurs utilitaires client samba installés dans ce répertoire.
# cd /usr/local/samba/bin/ # ls cifsdd ldbsearch ntdbrestore regshell smbcquotas tdbbackup dbwrap_tool locktest ntdbtool regtree smbget tdbdump eventlogadm masktest ntlm_auth rpcclient smbpasswd tdbrestore gentest ndrdump oLschema2ldif samba-tool smbspool tdbtool ldbadd net pdbedit sharesec smbstatus testparm ldbdel nmblookup pidl smbcacls smbtar wbinfo ldbedit nmblookup4 profiles smbclient smbta-util ldbmodify ntdbbackup regdiff smbclient4 smbtorture ldbrename ntdbdump regpatch smbcontrol smbtree
3. Configurer la fourniture de domaine
Pour démarrer la mise à disposition du domaine, exécutez l'outil samba comme indiqué ci-dessous. Cela récupérera le nom d'hôte et le nom de domaine par défaut à partir des fichiers de configuration.
# /usr/local/samba/bin/samba-tool domain provision Realm [EXAMPLE.COM]: Domain [EXAMPLE]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [125.22.47.125]: 8.8.8.8 Administrator password: Retype password: ... ... Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=example,DC=com Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: tgs NetBIOS Domain: EXAMPLE DNS Domain: example.com DOMAIN SID: S-1-5-21-2869186506-3515775153-2841826798
4. Démarrer le service Samba
Démarrez le service samba, comme indiqué ci-dessous.
/usr/local/samba/sbin/samba
Ajoutez l'entrée suivante au fichier rc.local pour vous assurer que le service samba démarre automatiquement au démarrage du système.
# echo /usr/local/samba/sbin/samba >> /etc/rc.d/rc.local # cat /etc/rc.d/rc.local touch /var/lock/subsys/local /usr/local/samba/sbin/samba
5. Vérifier la version de Samba
Vous pouvez vérifier la version de samba à l'aide de la commande samba ou smbclient comme indiqué ci-dessous.
# /usr/local/samba/sbin/samba -V Version 4.2.0pre1-GIT-913b2a1 # /usr/local/samba/bin/smbclient -V Version 4.2.0pre1-GIT-913b2a1
La commande suivante affichera tous les partages Samba actuellement disponibles.
# /usr/local/samba/bin/smbclient -L localhost -U% Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.2.0pre1-GIT-913b2a1) Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Server Comment --------- ------- Workgroup Master --------- -------
Vérifiez que vous pouvez vous connecter en utilisant le nom d'utilisateur et le mot de passe de l'administrateur.
# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator -c 'ls' Enter administrator's password: Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] . D 0 Fri Feb 21 15:06:15 2014 .. D 0 Fri Feb 21 15:06:28 2014 57901 blocks of size 8388608. 54372 blocks available
6. Vérifier les domaines
Vérifions maintenant si le domaine fonctionne comme prévu. Vérifiez les enregistrements SRV et A comme indiqué ci-dessous.
# host -t SRV _ldap._tcp.example.com _ldap._tcp.example.com has SRV record 0 100 389 tgs.example.com. # host -t SRV _kerberos._udp.example.com _kerberos._udp.example.com has SRV record 0 100 88 tgs.example.com. # host -t A tgs.example.com tgs.example.com has address 192.168.101.1
Utilisez la commande samba-tool pour vérifier le nom du domaine comme indiqué ci-dessous.
# /usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm realm = EXAMPLE.COM
7. Configurer Kerberos
Copiez l'exemple de fichier krb5.conf dans le répertoire /etc.
cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf
Définissez default_realm sur votre nom de domaine. Dans ce cas, nous le définirons sur example.com
# cat /etc/krb5.conf [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true
Utilisez la commande kinit pour vous assurer que Kerberos est correctement configuré, comme indiqué ci-dessous.
# kinit [email protected] Password for [email protected]: Warning: Your password will expire in 41 days on Fri Apr 4 15:06:25 2014
Enfin, vous pouvez utiliser l'outil d'administration à distance de Windows pour vous connecter au serveur Samba et l'utiliser comme contrôleur de domaine.
Si vous rencontrez des problèmes au cours du processus ci-dessus, assurez-vous de mettre le système à jour en mettant à jour tous les packages. Vous pouvez également désactiver temporairement SELinux et consulter audit.log pour tout message d'erreur lié à SELinux. Assurez-vous également que vos règles IPTables ne bloquent pas les ports requis par Samba pour communiquer entre les serveurs.