Contrôleur de domaine Samba sur Debian ETCH

Contexte de travail

Nous prendrons l’exemple d’une TPE souhaitant mettre en place une architecture client/serveur (voir schéma) permettant à chaque salarié de disposer d’un compte utilisateur (sur des postes Windows XP Pro) avec un dossier privé à son nom, un dossier public partagé par tout le monde et un dossier documents en lecture seule sauf pour l’administrateur.

Le serveur utilisera une Debian ETCH (5.0.3) comme OS et Samba (version 3.2.5) pour le contrôleur de domaine. Comme on peut le voir sur le schéma, le PDC hébergera également le serveur de fichiers.

Présentation de Samba

Samba est un logiciel libre principalement utilisé pour le partage de fichiers et d’imprimantes entre un serveur Linux et des clients Windows. On peut aussi l’utiliser pour mettre en place un contrôleur de domaine afin de gérer les utilisateurs, les droits d’accès aux dossiers…

Etape 1 : Configuration du serveur de fichiers

1. Installation de samba

Ouvrez un terminal et lancez l’installation de samba en sélectionnant la version 3.2.5. Si vous voulez une version plus récente de samba faîtes simplement apt-get install samba

aptitude install samba=3.2.5

Pendant l’installation il faudra mettre un nom de domaine, c’est à vous de le définir (par exemple moi j’ai mis : « samba.priv »)

2. Installation de Webmin (facultatif)

Si vous ne savez pas comment installer Webmin, je vous propose de consulter mon petit mémo à ce sujet. L’installation n’est pas indispensable mais certaines étapes de ce tutoriel (notamment la sauvegarde) seront plus simples en l’utilisant.

3. Création des groupes utilisateurs

Nous allons créer 3 groupes différents :

  • pdc_users: le groupe des utilisateurs
  • pdc_comps: le groupe des machines
  • pdc_admin: le groupe des administrateurs
groupadd nom_du_groupe

4. Création de l’arborescence

Tout d’abord, nous allons créer un dossier samba dans /srv :

mkdir /srv/samba

Ensuite, nous allons y créer 5 sous dossiers qui auront les droits suivants :

  • home : Chaque utilisateur aura un répertoire personnel en RW uniquement par lui
  • netlogon : Accessible en RW uniquement par root, RX pour les autres
  • profiles : Contient les paramètres (profils itinérants) de chaque utilisateur
  • documents : Accessible au groupe pdc_users en R et au groupe pdc_admin en RW
  • public : Accessible à tous les utilisateurs en RW. Seul le propriétaire d’un fichier peut l’effacer
mkdir /srv/samba/nom_du_dossier

Vous vous demandez peut être à quoi servent ces dossiers. Une description de chaque dossier est disponible dans le fichier de configuration de samba que vous trouverez plus loin dans ce tutoriel

5. Modification des droits sur les dossiers

Placez vous dans le dossier samba avec la commande cd /srv/samba et changez le groupe pour les dossiers documents et public :

chgrp pdc_admin documents/ && chgrp pdc_users public/

Il faut également changer les droits de ces deux dossiers en modifiant leur chmod et le sticky bit :

chmod 3777 public/ && chmod 2775 documents/

Au final voilà à quoi doit ressembler votre arborescence (pour l’afficher utilisez la commande ls -l) :

6. Création des comptes utilisateurs

a) Ajout sur la machine Linux (fichier passwd)

Pour rester simple nous avons 3 utilisateurs à ajouter : fred et alex font parti du groupe pdc_users et mika fait parti des groupes pdc_users et pdc_admin

Pour les utilisateurs nous utiliseront la syntaxe suivante, elle permet d’ajouter directement l’utilisateur créé à un groupe supplémentaire et de lui créer un répertoire personnel. Voici un exemple :

useradd fred -G pdc_users -m -d /srv/samba/home/fred -c "Compte de fred" -p pass -s /bin/false

Quelques explications sur les options utilisées :

  • -G pdc_users : Ajoute l’utilisateur dans un groupe supplémentaire
  • -m : Autorise la création d’un répertoire personnel
  • -d /srv/samba/home/fred : Définit l’emplacement du répertoire personnel
  • -c ‘Compte de fred’ : Le nom de la session pour l’utilisateur
  • -p pass : Définit le mot de passe de l’utilisateur (‘pass’ en l’occurrence)
  • -s /bin/false : Empêche de se loguer sur le serveur avec ce compte

N’oubliez pas que l’utilisateur mika doit faire parti à la fois du groupe pdc_admin et pdc_users. Pour plus de détails faîtes un man useradd ou man usermod.

Pour ajouter la machine cliente la syntaxe est un peu différente. La variable « nom_pc » correspond au nom NetBIOS de la machine. Par ailleurs, il est impératif de mettre un « $ » juste après le nom de la machine.

useradd -d /dev/null -s /bin/false nom_pc$
b) Ajout dans Samba (fichier smbpasswd)

Là vous avez deux solutions, soit le faire en ligne de commande, soit utiliser webmin. D’abord, je vais vous montrer comment ajouter un utilisateur « à l’ancienne »

smbpasswd -a nom_utilisateur

Il faudra aussi ajouter le compte de l’administrateur du domaine et les machines

smbpasswd -a root // Pour pas s’embêter on va prendre root
smbpasswd -m -a nom_pc$ // le « -m » indique que le compte est une machine

Autres options utiles de la commande smbpasswd :

smbpasswd -x nom_utilisateur // Supprimer un utilisateur
smbpasswd -d nom_utilisateur // Désactiver un utilisateur (qui ne pourra donc plus se loguer sur le réseau)
smbpasswd -e nom_utilisateur // Activer un utilisateur

Si on a beaucoup d’utilisateurs à ajouter il est peut être plus judicieux de passer par webmin pour cette étape. Allez dans Server > Samba Windows File Sharing > Convert Unix users to Samba users

Comme son nom l’indique, cette option permet de convertir les utilisateurs UNIX en utilisateur Samba. Le seul défaut est que la conversion ne différencie pas les utilisateurs des machines (le fameux -m). Du coup pour chaque machine il faut décocher la case « Normal user » et cocher « Workstation trust account ». Donc webmin ou pas c’est vous qui voyez, notez que vous pouvez aussi créer les partages réseaux et gérer les droits avec Webmin.

Si vous avez suivi vous devriez avoir les utilisateurs suivants dans votre fichier smbpasswd (pour le visualiser faîtes nano /etc/samba/smbpasswd)

Je n’ai qu’une seule machine dans mon fichier car j’ai virtualisé mon client XP, mais dans la réalité si chaque utilisateur à sa propre machine il faut ajouter toutes les machines

5. Création du script de démarrage

Placez vous dans le dossier netlogon et créez le script logon.bat avec ce contenu (nano logon.bat). N’oubliez pas de remplacer debianserver par le nom de votre serveur à vous !

# Montage du lecteur réseau de l'utilisateur dans le Poste de Travail
net use z: \\debianserver\home\%USERNAME%
# Montage du lecteur réseau « public » dans le Poste de Travail
net use y: \\debianserver\public
# Montage du lecteur réseau « documents » dans le Poste de Travail
net use x: \\debianserver\documents
# Synchronisation de l'horloge du client avec le serveur
net time \\debianserver /set /yes

Etape 2 : Configuration du contrôleur de domaine

Bien, à présent ouvrez le fichier smb.conf et remplacez tout le contenu avec celui de mon fichier

gedit /etc/samba/smb.conf

N’oubliez pas de changer la valeur du workgroup par la votre si vous n’avez pas utilisé samba.priv. Comme le fichier est assez long je ne vais pas l’afficher dans le post mais il est entièrement commenté donc il ne devrait pas y avoir de problèmes

Etape 3: Tester la configuration

La première étape sera de lancer la commande « testparm », qui sert à vérifier que le fichier de configuration de samba ne comporte pas d’erreurs. Vous pouvez lancer cette commande de n’importe ou.

Si tout est bon, on pourra lancer notre serveur avec la commande suivante :

/etc/init.d/samba start

Pour vérifier que ce dernier fonctionne correctement, on peut s’y connecter localement sur le serveur, en tapant cette commande*. (Tapez entrée à la demande du mot de passe) :

smbclient -L localhost

* Il faudra peut être télécharger les paquets du smbclient auparavant s’ils n’ont pas été installés (apt-get install smbclient)

Etape 4: Joindre le domaine

Sur chaque client XP Pro, il faut faire une petite modification dans le registre pour pouvoir joindre le domaine Samba en mettant la clé suivante à 0 (regedit.exe)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\parameters
"RequireSignOrSeal"=dword:00000000

Conseil : Si vous avez beaucoup de postes, il vaut mieux faire un clone et faire la modification une fois que de devoir la faire pour chaque poste !

Pour joindre le domaine, depuis le poste client faire un clic droit sur poste de travail/propriétés, onglet Nom de l’ordinateur/modifier et entrez les identifiants du compte root.

Après tant d’efforts voici enfin la récompense :)

Après avoir redémarré la machine cliente on pourra se connecter au domaine samba.priv avec les comptes utilisateurs crées dans Samba.

Dans le poste de travail, il y aura normalement les lecteurs réseaux suivants : un au nom de l’utilisateur, le public et le documents.

Etape 4: Gestion de la sauvegarde

Nous utiliserons le module Filesystem Backup de Webmin pour réaliser la sauvegarde du serveur de fichiers. Cet outil permet également de planifier ses sauvegardes à intervalles réguliers. Un autre avantage est qu’il sauvegarde/restaure également tous les droits sur les fichiers/dossiers

Pour effectuer une sauvegarde/restauration aller à : System > Filesystem Backup. Avant toute chose, il faut commencer par configurer le module (cf.image ci-dessous). Pour l’envoi de mail il faut également configurer le serveur mail

On peut ensuite configurer les options de la sauvegarde. Il y a pas mal d’options disponibles, je vous laisse tester tout ça. Bien évidement faîtes la sauvegarde sur un support externe et pas sur le serveur comme certains :) , moi j’avais qu’une clé USB sous la main…

Grâce à l’option « Do strftime substitution of backup destinations? » on peut mettre des variables dans le nom de fichier de la sauvegarde. Par exemple, en mettant « samba_%Y_%m_%d » le fichier de sauvegarde s’appellera samba_2011_09_13.tar ce qui est pratique dans le cas d’une sauvegarde quotidienne.

L’option « Just add new files to archive? » permet de faire des sauvegardes incrémentales plutôt que de faire une sauvegarde complète à chaque fois. Par contre, je crois pas qu’il soit possible de le paramétrer pour faire une incrémentale du lundi au samedi et une complète le dimanche par exemple. A vérifier…

Pour effectuer une restauration (et pas une simulation) ne pas oublier de mettre « no » en face de « Only show files in backup? »

Il faudra aussi penser à faire une sauvegarde des fichiers de configuration de Samba et des utilisateurs/groupes UNIX (avec le module Backup Configuration Files de Webmin par exemple). Ce long tutoriel est terminé, je n’ai pas abordé le partage des imprimantes car je ne peux pas le tester chez moi mais a priori cela ne devrait pas être trop compliqué à mettre en place.

Voici deux autres tutoriels sur le même sujet dont je me suis inspiré (merci à leurs auteurs) :

Laisser un commentaire

Vous pouvez ces balises HTML dans votre commentaire :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current month ye@r day *