Historiquement, les systèmes Windows utilisent leur propre protocole de partage de fichiers : SMB/CIFS. Le logiciel Samba a été développé pour permettre aux systèmes UNIX (dont Linux et Mac OS X) d’utiliser également ce protocole.
Comme il est souvent plus facile d’utiliser Samba sous UNIX que de configurer NFS sous Windows, il est courant de préférer l’utilisation de Samba dans des environnements comportant des clients Windows.
Pour que vous saisissiez les zones d’intervention possibles de Samba, vous devez vous pencher un peu sur les spécificités de Windows. Dans le monde Windows, vous trouvez deux types de réseaux :
des groupes de travail (workgroup) qui sont des réseaux d’ordinateurs sans gestion centralisée. Pour se connecter d’un ordinateur à l’autre du réseau, il faut que tous les comptes utilisateurs existent sur tous les ordinateurs du réseau avec les mêmes identifiants. Pour un petit réseau, c’est très bien parce qu’il n’y a pas de serveur central à gérer mais dès que le nombre d’utilisateurs et de machines augmente, ça devient vite compliqué à gérer.
des domaines de type NT4 ou Active Directory (AD). Les domaines, peu importe leur type, sont des réseaux d’ordinateurs gérés par une autorité d’authentification centrale appelée contrôleur de domaine. Sur de gros réseaux, c’est bien pratique de gérer tous les comptes utilisateurs sur un seul serveur.
Samba peut jouer le rôle d’un contrôleur de domaine NT4 ou AD mais dans ce chapitre, vous allez simplement monter un serveur de partage de fichiers pour un groupe de travail. Le partage ressemblera un peu à ce que vous avez mis en place avec NFS :
un répertoire commun, sans authentification ouvert à tous les utilisateurs du réseau
un répertoire personnel à chaque utilisateur avec authentification
Commençons par configurer le serveur.
Configurez le serveur
Avant tout chose, vous devez installer le serveur samba par la commande :
$ sudo apt-get install samba
Puis, pour configurer votre partage samba, il vous faudra éditer le fichier /etc/samba/smb.conf
Dans ce fichier, toutes les lignes commençant par;
ou #
sont des commentaires.
Le fichier comporte des sections : la configuration globale commence par[global]
puis ensuite la configuration de chaque partage est aussi définie dans une section dont le nom est entre crochets[]
Je vais vous expliquer quelques uns des paramètres de ce fichier. Pour plus d’informations, consultez la page de manuel desmb.conf
[global] workgroup = WORKGROUP
Le premier paramètre de la section globale est le groupe de travail. Par défaut sous Windows, il est à WORKGROUP donc si vos clients Windows ne l’ont pas changé, vous pouvez laisser le nom par défaut.
interfaces = 127.0.0.0/8 enp0s8 bind interfaces only = yes
Par défaut, samba écoute, c’est-à-dire qu’il accepte les connexions, sur toutes les interfaces. Samba est un système de partage de fichiers pour réseau local donc je vous conseille de le configurer pour qu’il n’écoute que sur votre interface locale. Vous pouvez configurer l’interface par son adresse ou par son nom.
server role = standalone server map to guest = bad use
Ici, vous configurez votre serveur Samba comme un serveur indépendant (standalone server) plutôt que comme un contrôleur de domaine. Le deuxième paramètre définit qu’un échec d’authentification pour un utilisateur inconnu connectera l’utilisateur avec le compte invité. vous pourrez ensuite définir pour chaque partage si vous autorisez les comptes invités ou non.
# Commenter les sections [printers] et [print$]
Un serveur Samba peut faire office de serveur d’impression pour votre réseau. Si vous n’avez pas d’imprimante connectée à votre serveur, commentez les sections [printers]
et[print$]
en mettant un ;
au début de chaque ligne pour les transformer en commentaires, non lus par le programme lors de son fonctionnement.
[home] path = /export/home/%u read only = no guest ok = no force create mode = 0660 force directory mode = 2770 valid users = @sambashare [shared] path = /export/shared read only = no guest ok = yes force create mode = 0660 force directory mode = 2770 force user = nobody force group = nogroup
En fin de fichier, rajoutez la configuration de vos deux partages.
Pour chaque partage, il faut indiquer son nom entre crochets et les paramètres du partage sur les lignes suivantes. Voici le détail des paramètres utilisés ici :
| Indique le chemin du répertoire partagé. Dans toutes les sections du fichier de configuration, il est possible d’utiliser certaines variables. Ici, vous utilisez |
| Un |
| Indique si les comptes invités sont autorisés à accéder au partage. |
| Indiquent les droits donnés respectivement aux nouveaux fichiers et répertoires créés sur le partage. |
| Indique les noms des utilisateurs autorisés à accéder au partage. Vous pouvez également indiquer des noms de groupes qui commencent par Sur Ubuntu, le groupe |
| Indiquent l’utilisateur et le groupe système auquel sera associé l’utilisateur distant qui se connecte. Comme pour le partage NFS, ici tous les utilisateurs qui accèdent à |
Voilà, enregistrez votre fichier de configuration et pour prendre en compte les changements, redémarrez le serveur par la commande :
$ sudo systemctl restart smbd
Si votre utilisateur système (pour moi c’est stiven) ne fait pas partie du groupe sambashare, ajoutez le par la commande :
$ sudo usermod -aG sambashare stiven
Les comptes système utilisés pour accéder aux partages doivent ensuite être enregistrés dans la base d’utilisateurs de Samba.
Ajoutez votre utilisateur système et pensez aussi à l’utilisateurnobody
qu’on utilise pour le partage[shared]
Un mot de passe vous est demandé, remplissez le même mot de passe que celui du compte système (laissez vide pour nobody) :
$ sudo pdbedit -a stiven $ sudo pdbedit -a nobody
Si vous vouliez créer un nouvel utilisateur sambatest avec son propre partage [home]
, vous pourriez le faire comme ceci :
$ sudo useradd -M -s /bin/false -g sambashare sambatest #Création d’un compte système sans répertoire home et sans shell de connexion $ sudo pdbedit -a sambatest #Ajout de sambatest à la base Samba $ cd /export/home $ sudo mkdir sambatest #Création du répertoire de partage [home] $ sudo chown sambatest sambatest #On donne les droits au répertoire pour sambates
Voici également quelques commandes utiles :
$ sudo pdbedit -L #Liste des utilisateurs de la base Samba $ sudo pdbedit -x -u sambatest #Suppression de sambatest de la base Samb
Vos partages sont prêts, il est temps de les utiliser sur votre client.
Configurez le client
Sur votre client, commencez par installer les paquets nécessaires à l’utilisation de Samba :
$ sudo apt-get install smbclient cifs-utils
Ensuite, vous allez pouvoir tester deux moyens d’accéder à vos partages :
par l’utilisation du client en lignes de commandes smbclient ;
en montant les partages réseaux.
Pour accéder au répertoire de l’utilisateur stiven, tapez la commande suivante :
$ smbclient -U stiven //vm-serveur/home
Après avoir entré votre mot de passe, vous êtes connecté dans une console interactive. Vous pouvez voir la liste des commandes en tapant help
Ensuite pour avoir des informations sur une commande, tapezhelp la_commande
Par exemple, pour savoir à quoi sert la commandeget
et comment l’utiliser, tapez help get
Pour accéder au répertoire partagé, vous pouvez simplement taper :
$ smbclient //vm-serveur/shared
Laissez le mot de passe vide et vous serez connecté au partage [shared]
en tant qu’invité.
Vous pouvez vous amuser à créer des fichiers ou des répertoires pour vérifier les droits des fichiers créés.
Pour monter les répertoires partagés, créez les points de montage sur votre client.
$ sudo mkdir -p /mnt/samba/home $ sudo mkdir -p /mnt/samba/share
Puis montez les partages par les commandes :
$ sudo mount -t cifs -o rw,guest //vm-serveur/shared /mnt/samba/shared $ sudo mount -t cifs -o rw,user=stiven,uid=stiven,gid=stiven //vm-serveur/home /mnt/samba/hom
Ici, le type de système de fichiers à choisir estcifs
qui est le nom du protocole utilisé par Samba.
Pour les options :
| Indique de monter le partage en lecture-écriture. |
| Indique de se connecter en utilisateur invité et de ne pas demander de mot de passe. |
| Précise le login de connexion au partage. |
| Précisent les UID et GID à donner aux répertoires et fichiers qui sont montés puisqu’il n’y a pas de lien entre les utilisateurs du serveur et ceux du client. Vous pouvez utiliser des noms ou des valeurs numériques. Par défaut, les fichiers montés appartiennent à |
Pour automatiser ce montage au démarrage de la machine, vous pouvez rajouter les lignes suivantes dans votre fichier /etc/fstab :
//vm-serveur/shared /mnt/samba/shared cifs rw,guest,_netdev 0 0 //vm-serveur/home /mnt/samba/home cifs rw,uid=stiven,gid=stiven,credentials=/root/.smbcredentials,_netdev 0
Pour fournir les identifiants automatiquement vous utiliserez l’option credentials
qui indique d’aller les chercher dans le fichier/root/.smbcredentials
Créez donc ce fichier avec le contenu suivant :
username=IDENTIFIANT password=MOTDEPASS
Vous remplacerez évidemmentIDENTIFIANT
etMOTDEPASSE
par vos identifiants et vous donnerez des droits minimum à ce fichier pour que personne ne puisse accéder à ces informations sensibles :
$ sudo chmod 600 /root/.smbcredentials
Bravo, vous avez monté votre premier serveur ! Vous permettez aux utilisateurs de votre réseau local de stocker leurs fichiers en réseau par NFS ou par Samba sur des partitions sécurisées par du RAID 1.
En résumé
Samba permet aux systèmes UNIX d’utiliser le protocole de partage de fichiers SMB/CIFS développé par Microsoft.
La configuration du serveur se fait dans le fichier
/etc/samba/smb.conf
Les utilisateurs UNIX du serveur n’ont pas besoin d’être les mêmes que ceux des clients.
L’accès aux partages se fait par un identifiant et un mot de passe ou par l’utilisation d’un compte invité.