Migrer un domaine Samba3 vers Samba4

Magazine
Marque
GNU/Linux Magazine
Numéro
154
Mois de parution
novembre 2012
Spécialité(s)


Résumé
Dans un précédent article, j'avais abordé le fonctionnement de l'Active Directory et sa mise en place avec Samba4. De nombreux domaines sont en place sous Samba3, mais les limites de cette technologie font qu'il devient grand temps pour un certain nombre d'administrateurs de migrer vers un domaine de type Active Directory. Nous allons voir dans cet article ce que propose Samba4 actuellement pour ne pas avoir besoin de mettre en œuvre des serveurs sous Windows.

Body

1. Introduction et processus de migration

Le processus proposé par Samba n'implique pas de devoir recréer le domaine ainsi que l'ensemble des comptes. Bien qu'il soit possible de mettre à jour un serveur existant, il est par contre nettement préférable de passer par un nouveau serveur. Sachant qu'il y a deux types de sysadmins, ceux qui ont fait une boulette et ceux qui ne vont pas tarder à en faire une, autant passer par cette méthode et repousser l'échéance de la prochaine bourde.

Pour la démonstration, je vais partir d'un domaine existant PLANETEXPRESS disposant de quelques comptes utilisateurs actifs. Pour le lecteur curieux qui souhaite reproduire les étapes de migration mais qui n'a pas de serveur samba3 sous la main, je vais très succinctement rappeler la mise en place d'un domaine NT4, sans entrer dans le détail de la configuration ou des partages.

Le futur serveur de son côté est donc une nouvelle installation. Dans le processus de migration du domaine, on ne procède pas à la création d'un nouveau domaine via un samba-tool provision, mais on créé le domaine en aspirant le contenu des bases Samba3 afin de migrer l'ensemble des objets du domaine tout en conservant les identifiants de sécurité (SID).

2. Le domaine NT4

Je vais partir d'un serveur samba3 en version 3.5.6 nommé disons srv-pdc et faire fonctionner une Debian Squeeze, donc stable. La configuration exposée ici n'a pas pour but de rentrer dans le détail du fonctionnement et de la configuration de Samba, aussi je resterai assez succinct.

On va commencer par créer deux groupes dont le nom parle de lui-même quant à leur fonction, puis on associe les groupes Windows génériques à nos comptes Unix :

# groupadd g 514 sambausers

# groupadd -g 515 sambamachines

# net groumap add rid=515 unixgroup=sambamachines ntgroup="Domain Computers"

# net groumap set "Domain Users" sambausers

# net groupmap add rid=514 unixgroup=sambausers ntgroup="Domain Users"

On ajoute au moins un compte à ce domaine et on génère un mot de passe avec un hash NTLM :

# useradd -g sambausers philip.fry && smbpasswd -a philip.fry

Enfin, il faut bien entendu déclarer notre serveur comme étant capable de gérer les authentifications sur le réseau et on le déclare sur les listes d'exploration Netbios. Pour faire court, les lignes utiles à ce niveau se résument à :

[global]

   workgroup = PLANETEXPRESS

   security = user

   domain logons = yes

   os level = 65

   domain master = yes

   local master = yes

   preferred master = yes

Il ne reste plus qu'à redémarrer Samba3 et on peut enfin attaquer les choses sérieuses !

3. Le nouveau serveur Samba4

3.1. Pré-requis :

Le futur serveur nommé srv-ad est sous Debian Testing pour des raisons de compatibilité entre le plugin pour les backend de zones dynamiques pour Bind fourni par Samba4 et la version de Bind de la distribution. Bien entendu, il est possible de compiler la bonne version de Bind pour Debian Testing. Le serveur se prépare de la même manière qu'un nouveau domaine. Le serveur devra donc être maintenu à l'heure par un serveur NTP proprement configuré et les partitions devront être montées avec les attributs user_xattr et acl.

Tout comme pour un nouveau serveur, on va avoir besoin des dépendances suivantes, je vous conseille également d'adapter votre variable d'environnement $PATH avec la valeur ci-dessous :

apt-get -y install build-essential libacl1-dev libattr1-dev \

   libblkid-dev libgnutls-dev libreadline-dev python-dev \

   python-dnspython gdb pkg-config libpopt-dev libldap2-dev \

   bind9utils dnsutils libtool git xsltproc libpam0g-dev \

   attr acl psmisc bind9 ntp libtalloc2 libtalloc-dev

echo "export PATH=$PATH:/usr/local/samba/bin/:/usr/local/samba/sbin/:" >> ~/.bashrc && source ~/.bashrc

Il restera ensuite à récupérer les sources de ldb et samba4 (en beta5 lors de la rédaction de cet article ) depuis ftp.samba.org et à les compiler à l'aide des traditionnels ./configure && make && make install.

3.2 Migration

Tout d'abord, il va donc falloir récupérer la configuration qui nous intéresse, disons dans le répertoire /samba3 préalablement créé.

scp -r root@srv-dc:/var/lib/samba/* /samba3

scp root@srv-dc:/etc/samba/smb.conf /samba3

scp root@srv-dc:/etc/group /samba3/

Ensuite, on peut vampiriser les bases issues de l'installation du domaine Samba3 pour créer le domaine Active Directory. Le domaine NT4 se nomme PLANETEXPRESS, j'ai par convention suffixé le domaine du TLD .local, mais ceci n'est en rien une obligation.

# samba-tool domain classicupgrade --dbdir=/samba3/ --use-xattrs=yes --realm=planetexpress.local /samba3/smb.conf

[...]

Ignoring group 'Domain Users' S-1-5-21-587561313-451766989-2726486068-1000 listed but then not found: Unable to enumerate group members, (-1073741722,No such group)

Ignoring group 'Domain Computers' S-1-5-21-587561313-451766989-2726486068-515 listed but then not found: Unable to enumerate group members, (-1073741722,No such group)

Exporting users

  Skipping wellknown rid=501 (for username=nobody)

Ignoring group memberships of 'hubert.farnsworth' S-1-5-21-587561313-451766989-2726486068-1002: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'kif.kroker' S-1-5-21-587561313-451766989-2726486068-1004: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'zapp.brannigan' S-1-5-21-587561313-451766989-2726486068-1001: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'philip.fry' S-1-5-21-587561313-451766989-2726486068-1003: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'turanga.leela' S-1-5-21-587561313-451766989-2726486068-1005: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'docteur.zoidberg' S-1-5-21-587561313-451766989-2726486068-1006: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'amy.wong' S-1-5-21-587561313-451766989-2726486068-1007: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'hermes.conrad' S-1-5-21-587561313-451766989-2726486068-1008: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'VM-XP-01$' S-1-5-21-587561313-451766989-2726486068-1010: Unable to enumerate group memberships, (-1073741724,No such user)

[...]

Once the above files are installed, your Samba4 server will be ready to use

Admin password:        u5DDH$O~BbUh8Ix=%2K[bc2TZ>;c

Server Role:           active directory domain controller

Hostname:              srv-ad

NetBIOS Domain:        PLANETEXPRESS

DNS Domain:            planetexpress.local

DOMAIN SID:            S-1-5-21-587561313-451766989-2726486068

[...]

Importing groups

[...]

Importing users

User root has been kept in the directory, it should be removed in favour of the Administrator user

Adding users to groups

Setting password for administrator

Administrator password has been set to password of user 'root'

Si tout va bien, le domaine aura été aspiré de la même façon, avec une série de jolies erreurs qui pourraient servir à effrayer de jeunes enfants. En effet, le serveur a été migré mais pas les groupes attenants, c'est pour cette raison que le fichier /etc/group de srv-pdc a été récupéré. Je vous propose par conséquent le script suivant qui remettra les choses d'aplomb. Une fois ce script exécuté, je vous invite à démarrer Samba en lançant la commande du même nom.

for line in ` cat /samba3/group `

do

        GID=` echo $line | cut -d ':' -f 3 `

        NOM=` echo $line | cut -d ':' -f 1 `

        MEMBRES=` echo $line | cut -d ':' -f 4 `

        # On ignore les comptes systèmes

        if [ $GID -gt 100 ]; then

                grep $NOM /etc/group

                  # Si le groupe n'est pas présent sur le nouveau serveur, alors on l'ajoute

                if [ $? == 1 ]; then

                        echo $line >> /etc/group

                        /usr/local/samba/bin/samba-tool group add $NOM

                        /usr/local/samba/bin/samba-tool group addmembers $NOM $MEMBRES

                fi

        fi

done

On peut désormais vérifier que notre domaine est correctement remonté et que l'on liste bien les utilisateurs et leur appartenance aux groupes :

root@srv-ad:~# samba-tool domain info 192.168.1.231                                                                                                                                                                                            

Forest           : planetexpress.local                                                                                                                                                                                                         

Domain           : planetexpress.local                                                                                                                                                                                                         

Netbios domain   : PLANETEXPRESS                                                                                                                                                                                                               

DC name          : srv-ad.planetexpress.local                                                                                                                                                                                                  

DC netbios name : SRV-AD                                                                                                                                                                                                                      

Server site      : Default-First-Site-Name                                                                                                                                                                                                     

Client site      : Default-First-Site-Name                                                                                                                                                                                                     

root@srv-ad:~# samba-tool group listmembers sambausers

hubert.farnsworth

docteur.zoidberg

hermes.conrad

amy.wong

kif.kroker

philip.fry

turanga.leela

zapp.brannigan

Si tout est en ordre, je vous invite alors à valider la connexion au domaine depuis un poste client Windows. Si l'authentification a fonctionné, le poste doit renvoyer le nom du nouveau serveur. Notez que bien entendu pour que l'authentification fonctionne, le poste client devra être en mesure de résoudre les enregistrements du domaine planetexpress.local, que ce soit au moyen d'un redirecteur DNS pour ce domaine ou bien en indiquant srv-ad comme serveur DNS.

C:\Documents and Settings\amy.wong>echo %LOGONSERVER%

\\SRV-AD

4. Que reste-t-il ensuite ?

Le plus urgent consiste en premier lieu à arrêter les services Samba de l'ancien serveur. Un petit exit 0 au début du script d'init est un choix judicieux car il permet de s'assurer que même en cas de redémarrage de l'ancien serveur, il n'y aura pas les deux serveurs actifs sur le réseau. En effet, le rôle émulateur de contrôleur de domaine de type NT4 est géré par un serveur unique sur l'AD et un seul serveur de ce type doit être présent sur un réseau. De plus, les bases doivent rester cohérentes et donc un seul serveur doit gérer le domaine à la fois.

Au niveau réseau, si vous utilisez encore du WINS, il est toujours possible de paramétrer le fichier smb.conf pour que ce soit pris en charge par les anciens démons samba3, mais il serait sans doute temps de retirer ces options DHCP si elles sont présentes afin de se débarrasser d'une telle vieillerie. Si vous avez une zone DNS sur l'ancien serveur qui risque d'entrer en conflit, je vous conseille de la migrer également dans Samba4. Il est très facile d'automatiser cela via samba-tool. Par exemple :

samba-tool dns add srv-ad planetexpress.local srv-pdc A 192.168.1.230

Il restera enfin les services de fichiers et d'imprimantes. Bien que le fichier smb.conf ait été transféré dans le répertoire /samba3 avant de lancer la migration des bases, cela n'a eu aucun effet sur les partages. Il faudra donc les réintégrer dans le fichier /usr/local/samba/etc/smb.conf. Bien que je n'aborde ce point qu'en fin d'article, c'est finalement presque le plus critique. C'est celui qui touche directement les utilisateurs. Le nom de serveur ayant changé, il est donc fort souhaitable que les utilisateurs travaillent via des lecteurs réseau mappés à la connexion, la directive logon script paramétrée sur le serveur Samba3 vous sera d'une aide précieuse. Enfin, la migration des données est bien entendu à opérer en amont. Il n'est pas tenable de laisser patienter les utilisateurs le temps que les données arrivent. Je ne saurais donc que trop vous recommander un transfert via rsync -AXLzvp –delete afin d'une part de préserver les propriétés des fichiers et surtout de n'avoir qu'un différentiel à traiter lors de la migration en cas réel.




Article rédigé par

Par le(s) même(s) auteur(s)

Déployer un service hautement disponible grâce à Redis Replication

Magazine
Marque
Linux Pratique
Numéro
140
Mois de parution
novembre 2023
Spécialité(s)
Résumé

Redis est un système de stockage de données en mémoire de type NoSQL orienté hautes performances. Il est souvent utilisé comme base de données, système de cache ou de messages. Nous verrons dans cet article comment déployer un service hautement disponible grâce à Redis Replication.

Galera, la solution pour des bases de données hautement disponibles

Magazine
Marque
Linux Pratique
Numéro
137
Mois de parution
mai 2023
Spécialité(s)
Résumé

Lorsqu’une application ne peut tolérer d’indisponibilités ou quand il devient nécessaire de fournir de la redondance au service de bases de données, il convient de mettre en place une architecture limitant les risques d’interruption de service. De même, le besoin de performance peut se faire sentir avec la croissance du nombre d’utilisateurs. Galera est une extension pour MariaDB aidant à résoudre ces deux situations.

Gérez votre stockage avec Stratis

Magazine
Marque
Linux Pratique
Numéro
128
Mois de parution
novembre 2021
Spécialité(s)
Résumé

Quand on parle de gestion du stockage local à un administrateur système Linux, il est généralement question de LVM et de filesystem XFS ou ext4. À un niveau plus évolué, on trouvera ZFS qui n'est pas libre ou bien Btrfs qui tarde à tenir ses promesses. Stratis a pour vocation de proposer quelque chose de neuf avec l’existant !

Les derniers articles Premiums

Les derniers articles Premium

La place de l’Intelligence Artificielle dans les entreprises

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’intelligence artificielle est en train de redéfinir le paysage professionnel. De l’automatisation des tâches répétitives à la cybersécurité, en passant par l’analyse des données, l’IA s’immisce dans tous les aspects de l’entreprise moderne. Toutefois, cette révolution technologique soulève des questions éthiques et sociétales, notamment sur l’avenir des emplois. Cet article se penche sur l’évolution de l’IA, ses applications variées, et les enjeux qu’elle engendre dans le monde du travail.

Petit guide d’outils open source pour le télétravail

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Ah le Covid ! Si en cette période de nombreux cas resurgissent, ce n’est rien comparé aux vagues que nous avons connues en 2020 et 2021. Ce fléau a contraint une large partie de la population à faire ce que tout le monde connaît sous le nom de télétravail. Nous avons dû changer nos habitudes et avons dû apprendre à utiliser de nombreux outils collaboratifs, de visioconférence, etc., dont tout le monde n’était pas habitué. Dans cet article, nous passons en revue quelques outils open source utiles pour le travail à la maison. En effet, pour les adeptes du costume en haut et du pyjama en bas, la communauté open source s’est démenée pour proposer des alternatives aux outils propriétaires et payants.

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Bash des temps modernes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les scripts Shell, et Bash spécifiquement, demeurent un standard, de facto, de notre industrie. Ils forment un composant primordial de toute distribution Linux, mais c’est aussi un outil de prédilection pour implémenter de nombreuses tâches d’automatisation, en particulier dans le « Cloud », par eux-mêmes ou conjointement à des solutions telles que Ansible. Pour toutes ces raisons et bien d’autres encore, savoir les concevoir de manière robuste et idempotente est crucial.

Les listes de lecture

9 article(s) - ajoutée le 01/07/2020
Vous désirez apprendre le langage Python, mais ne savez pas trop par où commencer ? Cette liste de lecture vous permettra de faire vos premiers pas en découvrant l'écosystème de Python et en écrivant de petits scripts.
11 article(s) - ajoutée le 01/07/2020
La base de tout programme effectuant une tâche un tant soit peu complexe est un algorithme, une méthode permettant de manipuler des données pour obtenir un résultat attendu. Dans cette liste, vous pourrez découvrir quelques spécimens d'algorithmes.
10 article(s) - ajoutée le 01/07/2020
À quoi bon se targuer de posséder des pétaoctets de données si l'on est incapable d'analyser ces dernières ? Cette liste vous aidera à "faire parler" vos données.
Voir les 125 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous