Samba : partage de fichiers

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Samba est un utilitaire permettant de mettre en place un partage de fichier de type SMB qui sera à la fois compatible avec Linux et Microsoft. Dans cet article nous verrons comment l’installer et surtout comment le configurer !

I/ Installation de Samba et configuration

L’installation de Samba sous debian se fait assez simplement :

sudo apt install samba

Pour lancer le démon samba il nous suffira d’entrer cette commande :

sudo systemctl start smbd

Si vous faites un nmap sur votre propre machine vous verrez que de nouveaux ports se sont ouverts aussi bien en TCP :

1

Qu’en UDP :

2.png

Ce qu’il faut retenir ici c’est que les ports 139/445 TCP sont utilisés pour le partage de fichiers et d’imprimantes. Tandis que les ports 137 et 138 UDP sont utilisés afin de faire respectivement de la traduction de nom (NBT-NS) et de la transmission de faibles quantités de données.

Le fichier de configuration de samba est situé à cet emplacement : /etc/samba/smb.conf et est divisé en trois parties : « global », homes » et « printers ».

La premier ligne de configuration est la suivante :

workgroup = WORKGROUP

Cette option va spécifier quel est le domaine dans lequel se trouve le serveur SMB. Ici c’est le groupe de travail pas défaut (à modifier suivant les besoins). La seconde ligne est :

client_max_protocol = NT1

Cette ligne indique à Samba quelle est la version maximale supportée ici NT1 qui est quand même un peu vieux… Je l’ai donc modifié afin d’y mettre la dernière version du protocole SMB : SMB3_11 :

client_max_protocol = SMB3_11

Ensuite nous avons toute la partie log qui nous apprend qu’un fichier de log est généré pour chaque machine dans le répertoire /var/log/samba et ne peut pas avoir une taille qui dépasse les 1000KiB.

Passons directement à la partie « home » :

3

Ça c’est la configuration par défaut qui dit que le répertoire racine de chaque utilisateur est son répertoire /home/, qu’il y a accès en lecture seul et donc qu’il ne peut pas y créer de fichiers. La preuve :

4.png

Il sera cependant possible d’y avoir accès en lecture et en écriture en modifiant les valeurs :

read_only = yes
create_mask = 0700
directory mask_ = 0700

en

read_only = no
create_mask = 0775
directory mask_ = 0775

En plus de ces directives « par défaut » Samba propose plusieurs options supplémentaire qui sont décrites dans le man. Une d’entre elle m’a paru intéressante à présenter : veto files.

Cette directive va nous permettre de dresser une liste de fichiers qui ne seront pas visibles et donc pas accessibles. On pourra par exemple décider d’empêcher l’accès à tous les fichiers cachés (qui commencent par un .) :

veto files /^.*/

II/ Mise en place d’un share public

Avant tout nous allons devoir un créer un répertoire sur notre système hôte que l’on appellera (par convention) « Public »

mkdir /home/defte/Public

Dans ce répertoire on créera un fichier texte :

echo "Bienvenue sur le share public" > /home/defte/Public/welcome.txt

Ensuite nous allons modifier les droits sur ce répertoire afin que n’importe qui y ait accès :

sudo chmod 0777 /home/defte/Public
sudo chown -R nobody:nogroup /home/defte/Public

Puis dans notre fichier de configuration Samba nous allons ajouter ces lignes:

[Public]
   path = /home/defte/Public # Répertoire en accès libre
   guest ok = yes # Les invités ont le droit d'y accéder
   guest only = no # Tout le monde y a accès
   read only = no # On y a accès en lecture et en écriture
   create mode = 0777 # Tout le monde peut créer, modifier et supprimer un fichier
   directory mode = 0777 # Tout le monde peut créer ou supprimer un répertoire
   force user = nobody # L'utilisateur est "nobody"

Lorsqu’un utilisateur va se connecter depuis son poste, il se verra attribuer un utilisateur présent sur le système qui héberge le share. Cet utilisateur, c’est celui que l’on définit dans la directive « force user »

On redémarre le service smbd :

sudo systemctl restart smbd

Et on accède au fameux share :

5.png

A savoir que l’on pourra ensuite filtrer les accès à certain share en se servant des directives « valid users » et « invalid users »:

valid users = some_user

ou donner accès à un certain groupe :

valid users = @some_group

L’@ indiquant à Samba que la valeur qui suit est le nom d’un groupe et non pas celui d’un utilisateur.

Il sera d’ailleurs possible de lister l’ensemble des connections à nos share en utilisant la commande :

sudo smbstatus

6.png

IV/ Accéder à un share depuis Linux

Sous Linux on dispose de plusieurs outils qui nous permettent d’accéder à un share. L’un d’entre eux s’appelle smbclient.

Pour lister les share présents on utilisera cette commande :

smbclient -L "share" -w "domain" -U "utilisateur"

-L : indique que l’on veut lister les share
-W : indique sur quel domaine le share est présent
-U : le nom de l’utilisateur

7.png

Pour se connecter à l’un d’eux on utilisera cette commande :

smbclient \\192.168.0.34\"nom_du_share" -W "domaine" -U "utilisateur"

8.png

Et pour finir on pourra aussi très bien monter un partage SMB comme on monterait un disque dur. Pour cela on utilisera l’utilitaire mount que l’on pourra télécharger ainsi :

sudo apt install cifs-utils

Et utiliser de cette manière :

 sudo mount -t cifs //192.168.0.39/defte mount/ -o rw,username="votre_username",password="votre_password"

On aura du coup accès au share depuis un répertoire présent localement sur notre machine.

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s