Migrer un serveur de partages Windows vers Linux
Le contexte
Toujours dans le cycle « comment se débarrasser de serveurs Windows », nous avions vu dans un précédent article l’intégration de serveurs Linux dans un environnement Active Directory multi-domaines (cf. Authentification Kerberos avec Apache dans un environnement Active Directory multi-domaine). Aujourd’hui nous allons profiter du renouvellement matériel de serveurs Windows 2000/2003 offrant comme service des partages de fichiers dans lesquels les utilisateurs mettent des fichiers avec tout un tas de permissions.
Nous savons désormais joindre un domaine AD et la subtilité de l’opération d’aujourd’hui sera de préserver les permissions que les utilisateurs auront mis sur les fichiers et qu’ils puissent ainsi continuer à travailler avec leur poste Windows XP/7 comme si de rien n’était.
Nous, on arrive et on est toujours content car on propose d’utiliser les logiciels suivants :
- Linux CentOS 5.6
- Samba 3.5.4
Et tout ça dans l’environnement qui suit :
- OS des postes de travail : Windows XP et 7
- Ancien serveur Windows : Windows 2000 ou 2003
- KDC : Windows 2003/2008 R2
Règles de nommage utilisées dans ce tutoriel
- Serveur Windows : serverW
- Serveur Linux CentOs : serverL
- Serveur KDC 2003 dom.maboite.fr : serverKDC
Installation
Une fois la distribution CentOS préparée dans une version de base, il faut installer les packages nécessaires :
# yum update # yum install krb5-workstation # yum install samba3x samba3x-client # yum install ntp
Configuration
Date et heure
Notre serveur ne doit pas être trop décalé (< 10 mn) avec le DC du domaine DOM.
Modifiez le fichier /etc/ntp.conf pour que le serveur se synchronise avec un serveur de temps, puis taper les commandes suivantes :
# service ntpd stop # ntpdate @SERVEUR_de_TEMPS # service ntpd start
Fichier HOSTS
Le fichier /etc/hosts doit être correctement renseigner pour pouvoir joindre un domaine Active Directory :
127.0.0.1 serverL.maboite.fr serverL
ACL
Pour pouvoir utiliser les acl sur les fichiers, la partition qui recevra les partages devra être montée avec l’option « acl ».
Il faut donc modifier le fichier /etc/fstab, exemple :
LABEL=/opt /opt ext3 acl,defaults 1 2
KERBEROS
Éditez le fichier /etc/krb5.conf et adaptez ce qui suit :
[libdefaults] default_realm = DOM.MABOITE.FR kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true fcc-mit-ticketflags = true [realms] DOM.MABOITE.FR = { kdc = @IP serverKDC admin_server = @IP serverKDC } [domain_realm] MONWORKGROUP = DOM.MABOITE.FR .dom.maboite.fr = DOM.MABOITE.FR [appdefaults] kinit = { renewable = true fowardable = true }
SAMBA
Voici un extrait du fichier de configuration /etc/samba/smb.conf présentant les paramètres nécessaires :
[global] addsharecommand = /usr/local/bin/modify_samba_config.pl ntaclsupport = yes winsserver = @Ip_Wins idmapuid = 10000-30000 printcapname = /etc/printcap winbindcachetime = 3600 dosfilemode = yes templatehomedir = /home/%D/%U preferredmaster = no printing = cups inheritacls = yes workgroup = MONWORKGROUP winbindofflinelogon = true security = ADS domainmaster = No idmapgid = 10000-30000 printcap = cups winbindusedefaultdomain = no showaddprinterwizard = yes enableprivileges = yes passwordserver = * mapaclinherit = yes realm = DOM.MABOITE.FR forceunknownacluser = yes loadprinters = yes path = /opt templateshell = /bin/bash serverstring = serveurL encryptpasswords = true winbindrefreshtickets = true ## Section - [partages] [partages] comment = path = /opt/partages max connections = 0 adminusers = "MONWORKGROUP\\compte_admin_dom" root browseable = yes writeable = yes public = yes available = yes
Puis nous allons joindre le serveur Linux au domaine :
# /etc/init.d/smb stop # /etc/init.d/nmb stop # /etc/init.d/winbind stop # net cache flush # kinit compte_admin_dom # net ads join -U compte_admin_dom Enter compte_admin_dom's password:
La réponse de la dernière commande indiquant que l’opération s’est bien déroulée doit être :
Using short domain name -- MONWORKGROUP Joined 'SERVERL' to realm 'dom.maboite.fr'
Pour vérifier :
# net ads testjoin Join is OK
Puis on redémarre SAMBA :
# /etc/init.d/smb start # /etc/init.d/nmb start # /etc/init.d/winbind start
Le fichier modify_samba_config.pl
Ce script permettra de recréer automatiquement sur le serveur Linux, les partages se trouvant sur le serveur Windows.
Vous le trouverez dans l’archive source de Samba : ./samba-3.5.6/examples/scripts/shares/perl/modify_samba_config.pl puis copier le dans /usr/local/bin/.
Copie des partages et des données
Maintenant que tout est prêt, nous allons recréer automatiquement les partages présents et copier les données.
Pour migrer tous les partages ainsi que tous les fichiers qu’ils contiennent :
# net rpc share migrate shares -S {IP_serverW} --acls --timestamps \\ --exclude=c$,e$,netlogon,sysvol,d$,print$,printers,a$,admin$,ipc$ \\ -v -U "MONWORKGROUP\\\\compte_admin_dom" # net rpc share migrate files -S {IP_serverW} --acls --timestamps \\ --exclude=c$,e$,netlogon,sysvol,d$,print$,printers,a$,admin$,ipc$ \\ -v -U "MONWORKGROUP\\\\compte_admin_dom" # service smb restart
Pour migrer un partage particulier :
# net rpc share migrate shares {MY_SHARE} -S {IP_serverW} --acls --timestamps \\ -v -U "MONWORKGROUP\\\\compte_admin_dom" # net rpc share migrate files {MY_SHARE} -S {IP_serverW} --acls --timestamps \\ -v -U "MONWORKGROUP\\\\compte_admin_dom" # service smb restart
Conclusion
Et voilà comment remplacer un serveur de partages Windows par un serveur de partages Linux, en toute transparence pour les utilisateurs. On les aura un jour, on les aura !