Hide navigation sidebar
Hide table of contents sidebar
Skip to content
SAMBA 4.22
Back to top
View this page
Toggle table of contents sidebar

# Passer d’un schéma rfc2307 à un schéma tdb

En environnement Windows, un groupe peut être propriétaire d’un fichier, alors qu’en Linux seul un utilisateur peut être propriétaire d’un fichier.

Samba va gérer ça en donnant un id unique aux groupes (GUID) et aux utilisateurs (UID).

De fait, un groupe peut être propriétaire d’un dossier sous Linux grâce son id. Le winbind en mode RFC2307 ne sait pas gérer ça, il faut revenir en mode tdb, la configuration par défaut de Samba-AD.

Ce problème n’est pas visible tant que domain admins n’a pas d’id historique. Si c’est le cas, il n’arrivera pas à interfacer l’id du groupe, le groupe et le dossier dont il est propriétaire.

## Convertir un idmap rfc2307 en tdb

- Dans un premier temps, il faut nettoyer la base de données `idmap.ldb` :

      for i in $(ldbsearch  -H /var/lib/samba/private/idmap.ldb  dn  | grep ^dn | awk '{ print $2 }' | grep -v CONFIG) ; do echo "ldbdel -H /var/lib/samba/private/idmap.ldb $i" ; done

  Indication

  Ce code va vous afficher les lignes de commandes à exécuter. Elles ne sont pas exécutées!. Vous pouvez supprimer la commande `echo` pour les exécuter directement ou copier coller la sortie dans un `bash`. Une fois la commande lancée il peut être aussi utile de vider le cache.

      net cache flush

- On redémarre le service samba lorsque la commande a terminé :

      # Debian
      systemctl restart samba-ad-dc
      # RedHat10 and derived distributions
      systemctl restart samba

- On ré-initialise les droits sur le `sysvol`, puis on réinitialise les ACLs :

      setfacl -b /var/lib/samba/sysvol
      chown -R root:root /var/lib/samba/sysvol
      chmod 755 /var/lib/samba/sysvol
      samba-tool ntacl sysvolreset
      samba-tool ntacl sysvolcheck

Si les commandes ne renvoient pas d’erreur alors tout est OK.

On peut vérifier les nouveaux mapping avec les commandes Winbind ou bien avec les commandes ldbsearch.

    ldbsearch  -H /var/lib/samba/idmap.ldb

## Synchroniser avec des serveurs distants

Si vous utilisez rsync pour faire la synchronisation avec un numeric id, il faut aussi synchroniser à la fois les bases idmap ainsi que les droits sur les fichiers (droits ugo, acl posix et attributs étendus).

Si l’on synchronise le fichier `idmap.ldb` par rsync, il faut penser à vider les caches et à relancer Samba :

    net cache flush
    systemctl restart samba