Erreurs courantes avec Samba-AD, astuces et conseils

Erreur lors du provisioning

ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: 'server role=auto' in /etc/samba/smb.conf must match chosen server role 'active directory domain controller'!  Please remove the smb.conf file and let provision generate it
File "/usr/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 474, in run
   nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File "/usr/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2046, in provision
   sitename=sitename, rootdn=rootdn, domain_names_forced=(samdb_fill == FILL_DRS))
File "/usr/lib64/python2.7/site-packages/samba/provision/__init__.py", line 619, in guess_names
   raise ProvisioningError("guess_names: 'server role=%s' in %s must match chosen server role '%s'!  Please remove the smb.conf file and let provision generate it" % (lp.get("server role"), lp.configfile, serverrole))

Le fichier /etc/samba/smb.conf créé par l’installation du paquet de la distribution n’a pas été supprimé comme écrit dans la documentation.

Vérifier la jonction d’un membre Linux au domaine

wbinfo -c
net ads join -U administrator
net ads testjoin
wbinfo -t

Installer une extension de schéma dans Samba-AD

ldbmodify -H /var/lib/samba/private/sam.ldb /root/schema.ldif --option="dsdb:schema update allowed"=true

Optimiser les réplications avec Samba-AD

Repasser les droits TDB sur le SYSVOL

  • commenter la ligne suivante dans /etc/samba/smb.conf :

    #    idmap_ldb:use rfc2307 = yes
    
  • nettoyer les caches de mapping SID /xidnumber :

    systemctl  stop samba-ad-dc
    
  • parcourir la base idmap.ldb et modifier les entrées qui ne nous intéressent plus :

    for i in `ldbsearch  -H /var/lib/samba/private/idmap.ldb  | grep dn:| sed 's/dn: //' | grep -v CONFIG` ; do ldbdel -H /var/lib/samba/private/idmap.ldb "$i" ; done
    
  • redonner les bons droits et relancer le SYSVOL :

chown -R root:root /var/lib/samba/sysvol
setfacl -b sysvol
rm -f /var/lib/samba/private/netlogon_creds_cli.tdb /var/cache/samba/*
systemctl  start samba-ad-dc
samba-tool ntacl sysvolreset
samba-tool ntacl sysvolcheck

Utiliser Bind-DLZ ou bien le service DNS interne de Samba-AD en production

Note

Le DNS intégré à Samba4 est fonctionnel pour les tests, mais il est nécessaire de passer en mode “Bind DLZ” une fois que l’on passe en production. En effet, bien que le DNS interne Samba est très simple à mettre en place, il a deux gros inconvénients :

  • il ne fait pas de cache ;
  • on ne bénéficie pas des configuration DNS avancée offertes avec Bind ;

L’installation d’un serveur Bind9 en frontal de Samba avec une intégration DLZ va permettre d’avoir à la fois la performance et la flexibilité de Bind9, et de bénéficier de la gestion des zones DNS intégrées à Active Directory de la même manière que le DNS interne.

Note : Bind DLZ ne fonctionne pas en mode multiview de Bind s’il est référencé dans plusieurs zones

Transférer votre Samba3-NT4 vers une nouvelle machine

Les opérations suivantes sont réalisées avec le compte root.

  • arrêter le service samba avec systemctl stop smb ;
  • dumper le contenu de votre annuaire avec slapcat > ldap_dump.ldif ;
  • récupérer les fichiers /etc/slapd/, /etc/samba/, /etc/libnss* et /var/lib/samba/ ;
  • installer la nouvelle machine avec Debian Stretch 64bit basique en suivant cette documentation. ;
  • installer sur la nouvelle machine les paquets suivants :
apt-get install slapd samba libnss-ldap
  • sur la nouvelle machine, remettre les quatre fichiers sauvegardés précédemment :
  • ré-intégrer la base LDAP :
systemctl stop slapd
rm -Rf /var/lib/ldap/*
slapadd -f /root/ldap_dump.ldif
chown -R openldap:openldap /var/lib/ldap