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 !  😉

Vus : 4371
Publié par Vince : 7