Comment simplifier et automatiser la migration d’un serveur de fichiers SAMBA vers Windows 2012

1. OBJECTIFS DE CET ARTICLE :
– Présenter le fonctionnement d’un serveur de fichiers SAMBA.
– Présenter une procédure de migration d’un serveur de fichiers SAMBA vers un serveur de fichiers Windows 2012 membre d’un domaine Active Directory.

2. INSTALLATION ET TEST D’UN SERVEUR DE FICHIERS SAMBA :
2.1 Installation d’un serveur de fichiers SAMBA 3.X :

L’article ci-dessous présente la procédure d’installation d’un serveur de fichiers SAMBA sous CENTOS 6 membre d’un domaine Active Directory.
http://phreek.org/guides/centos-6-samba-ad-member-server
Il faut configurer / désactiver SE LINUX pour que ce serveur fonctionne correctement.
https://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable.html

2.2 Test d’un serveur de fichiers SAMBA 3.X :
Pour accéder aux données partagées, un utilisateur doit disposer de permissions au niveau de SAMBA (smb.conf) et de permissions sur le système de fichiers (EXT3 / EXT4 généralement).
C’est le cumul le plus restrictif qui s’applique. Si un utilisateur a le droit Lire et écrire avec les permissions SAMBA et le droit Lire au niveau des permissions EXT3 / EXT4, l’utilisateur aura uniquement le droit de lire le fichier.
Il n’y a pas de notions d’héritage en Linux avec le système de fichiers EXT3 / EXT4.
Les paramètres create mask = 0770 et directory mask = 0770 permettent de définir les droits sur un nouveau fichier / nouveau dossier créé par un utilisateur au niveau des permissions EXT3/EXT4.
Avec un create mask = 0770, lorsque le compte utilisateur guillaume.mathieu accède au partage SAMBA et crée un fichier, seul le compte guillaume.mathieu et son groupe primaire (utilisa du domaine par défaut) ont le droit de lire et écrire sur ce fichiers. Les autres utilisateurs n’ont pas d’accès à ce fichier.
Il est possible de corriger ce comportement en exécutant tous les jours un script qui modifie les permissions pour chaque dossier.
Ce comportement fait que généralement le groupe Utilisa du domaine a trop de permissions sur le système de fichiers Linux. C’est pour cette raison que généralement, je ne migre pas les permissions Linux.

3. INSTALLER LE SERVEUR DE FICHIERS WINDOWS 2012 :
Désactiver l’UAC sur le serveur Windows 2012 (Panneau de configuration | Comptes utilisateurs).
Configurer PowerShell pour autoriser l’exécution de script :
Set-ExecutionPolicy Unrestricted
Installer Quest ActiveRoles Management Shell (permet le fonctionnement de la solution sur des domaines Active Directory géré par des contrôleurs de domaine Windows 2000 et versions ultérieures) :
http://www.quest.com/powershell/activeroles-server.aspx

4. RECREER L’ARBORESCENCE DE FICHIERS VIDE :
La première étape est de recréer l’arborescence de fichiers vide.
Pour cela, partager le ou les dossiers racines sur le serveur de fichiers non Windows (avec SAMBA).
Monter chaque partage sous forme d’un lecteur réseau sur une machine Windows.
Exporter l’arborescence vide  à l’aide de la commande suivante :
Get-ChildItem -Recurse | Where-Object {$_.Attributes -eq “Directory”} | Select-Object FullName | Export-Csv -Path C:\Scripts\Arborescences\arborescences.csv -UseCulture -Encoding UTF8
Remarque :
Pour une arborescence avec 300000 fichiers, on obtient un fichier de 50 Mo.
Ce fichier doit être au format UTF8 pour que la solution fonctionne.

Il faut maintenant importer l’arborescence vide sur le serveur Windows 2012 à l’aide de ce script :
$base = Import-csv -Path C:\Scripts\Arborescences\arborescences.csv -UseCulture -Encoding UTF8
foreach ($line in $base)
{
$line.FullName
New-Item $line.FullName -Type Directory -force
}

5. CREER UN FICHIER EXCEL AVEC LA LISTE DES DOSSIERS AVEC DES PERMISSIONS NTFS SPECIFIQUES ET LA LISTE DES PARTAGES :

5.1 Créer le fichier Excel :
Le fichier doit contenir les colonnes suivantes :
– Name : nom du partage (utilisé si CreateShare égale à Yes).
– Path : cette valeur est utilisée pour créer le partage et définir les permissions NTFS.
– Description : cette valeur est copiée dans le champ Description du partage.
– RO : tous les groupes / comptes utilisateurs qui disposent d’un accès en lecture uniquement. Utiliser une virgule comme séparateur entre les groupes / comptes utilisateurs.
– RW : tous les groupes / comptes utilisateurs qui disposent d’un accès en lecture et écriture. Utiliser une virgule comme séparateur entre les groupes / comptes utilisateurs.
– CreateShare : si contient la valeur Yes, le script créera un partage.

5.2 Analyser le fichier SMB.CONF et les permissions EXT3 / EXT4 :
Analyser le fichier SMB.CONF du serveur de fichiers SAMBA :
– Créer une entrée dans le fichier Excel pour chaque partage.
– Ne pas mettre de guillemets ou de points virgules dans le fichier Excel.
– Compléter les colonnes RO et RW du fichier Excel selon les permissions SAMBA définis dans le fichier SMB.CONF et les permissions EXT3 / EXT4 (analyse avec la commande Linux getfacl).
Pour cela, il faut s’appuyer sur les règles de conversion permissions SAMBA – permissions SMB Windows ci-dessous.
Règle 1 :
– Permissions SAMBA : aucun paramètre.
– Permissions SMB Windows : lecture seule pour tout le monde
Règle 2 :
– Permissions SAMBA : writable = yes
– Permisions SMB Windows : lecture / écriture pour tout le monde
Règle 3 :
– Permissions SAMBA : read only = yes
– Permisions SMB Windows : lecture seule pour tout le monde
Règle 4 :
– Permissions SAMBA : read only = yes
write list = guillaume.mathieu
– Permissions SMB Windows : lecture seule pour tout le monde et lecture / écriture pour guillaume.mathieu
Règle 5 :
– Permissions SAMBA : read only = yes
writable = yes
– Permissions SMB Windows : lecture / écriture pour tout le monde
Règle 6 :
– Permissions SAMBA : valid users = guillaume.mathieu
– Permissions SMB Windows : Accès en lecture seule pour guillaume.mathieu. Pas d’accès pour les autres utilisateurs.
Règle 7 :
– Permissions SAMBA : valid users = guillaume.mathieu
read only = no
– Permissions SMB Windows : Accès en lecture / écriture pour guillaume.mathieu. Pas d’accès pour les autres utilisateurs.
Règle 8 :
– Permissions SAMBA : valid users = guillaume.mathieu, tigrou.mathieu
read only = no
read list = tigrou.mathieu
– Permissions SMB Windows : accès en lecture seule pour tigrou.mathieu, accès en lecture / écriture pour guillaume.mathieu, pas d’accès pour les autres utilisateurs.

5.3 Conversion du fichier Excel au format CSV :
Sélectionner la colonne Path et afficher les lignes par ordre alphabétique.
Copier / coller le résultat dans un nouveau fichier Excel.
Exporter le nouveau fichier au format CSV avec des points virgules comme séparateur.
http://office.microsoft.com/en-us/excel-help/import-or-export-text-txt-or-csv-files-HP010342598.aspx
Ouvrir le fichier obtenu avec NOTEPAD et l’enregistrer au format UTF8.

5.4 Créer les groupes, les partages et les permissions de partage :
Télécharger et exécuter le script suivant : http://msreport.free.fr/articles/Create-Groups-Share.txt
Ce script génère un fichier appelé startCreateGroupsShare.txt
Il faudra ensuite renommer ce fichier avec l’extension .ps1 et l’exécuter. Ce script permet de :
– Créer un groupe NomPartage_L pour les accès en lecture  uniquement.
– Créer un groupe NomPartage_M pour les accès en lecture / écriture.
– Créer un partage si la colonne CreateShare a pour valeur Yes. Donner les permissions de lecture seule sur ce partage au groupe NomPartage_L et lecture / écriture au groupe NomPartage_M.
Astuces :
– Utiliser PowerShell ISE pour vérifier le bon fonctionnement du script StartCreateGroupsShare.ps1.
– Vérifier qu’aucun champ ne contient des guillemets.

6. APPLICATION DES PERMISSIONS NTFS :
6.1 Définir les permissions NTFS sur chaque dossier racine sur le serveur de fichiers Windows :
Au niveau de chaque dossier racine, aller dans l’onglet Sécurité puis cliquer sur le bouton Avancé.
Cliquer sur le bouton Désactivé l’héritage et supprimer les permissions héritées.
Donner le droit contrôle totale aux objets System et administrateurs (le groupe administrateurs du serveur).
Forcer tous les sous dossiers à hériter leur droit de ce dossier.

6.2 Définir les permissions NTFS à partir du fichier Excel :
Télécharger et exécuter le script suivant : http://msreport.free.fr/articles/Define-NTFSPermissions.txt
Ce dernier permet de définir sur chaque dossier du fichier Excel :
– Les permissions NTFS Lecture au groupe NomPartage_L
– Les permissions NTFS Lecture / écriture au groupe NomPartage_M
– Forcer l’application de l’héritage sur tous les fichiers / dossiers enfants.

A+
Guillaume MATHIEU
Consultant Proservia
http://msreport.free.fr
La connaissance s’accroît quand on la partage.

 

A propos Guillaume Mathieu

Directeur Technique chez Flexsi
Ce contenu a été publié dans Active Directory, Annuaire, Outils, SAMBA, Scripts. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire