Partage de fichiers avec Samba


Samba est un logiciel multi-plateforme communément utilisé pour le partage de fichiers dans un réseau local. Simple et rapide à mettre en place. Ci-dessous j'expose des situations pour comprendre son fonctionnement avec des cas pratiques.

Version testé : Debian 8 (Jessie) avec samba 4

Configuration basique

Admettons que l'on souhaite partager des dossiers sur un réseau local. Que ce soit chez soit ou dans une entreprise, cette technologie est très souvent employé du fait qu'elle n'est pas très compliqué à configurer.

Commençons par installer les dépendances :

apt-get install samba

Ajouter dans le fichier les lignes suivantes pour décrire l'identité du serveur et configurer les droits du chemin à partager.

nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = Serveur NAS
netbios name = NAS
security = user
map to guest = bad user
dns proxy = no
 
[partages]
path = /chemin2dossier/a/partager
guest ok = yes
read only = no

Ci-dessous, dans la section [Partages], j'indique l'emplacement du dossier, que tous les utilisateurs aient les accès en lecture et écriture et que même les utilisateurs inconnus au système ont le droit d'y accéder.

On redémarre le service :

service smbd restart

Pour s'y connecter depuis une machine cliente dont son système est de type Linux :

mount -t cifs //ip-server/partages /mnt/

Ou pour accéder aux dossiers via un client accessible via terminal :

smbclient //ip-server/partage

Machines clientes sous GNU/Linux

Admettons que l'on souhaite accéder au partage avec le logiciel Thunar ou Nautilus. Il nous faudra alors le paquet suivant :

apt install gvfs-backends

Accès par authentification

Admettons qu'un important utilisateur (toto) veut accéder à ses dossiers sur le réseau mais lui seul à les droits d'y accéder. Si ce n'est pas déjà fait, créons cet utilisateur avec son espace personnel.

Dans un premiers temps, commençons par vérifier que nous possédons les bonnes dépendances :

apt-get install samba samba-common-bin

Créons ensuite l'utilisateur ainsi qu'un mot de passe :

useradd toto
smbpasswd -a toto

la commande useradd permet juste de créer un utilisateur système qui sera dédié à notre partage de fichiers et cela grâce à la commande smbpasswd. On ne pourra pas l'utiliser pour une connexion SSH par exemple.

On peut vérifier la création de ce compte utilisateur :

pdbedit -w -L

Ajouter dans le fichier de configuration :

nano /etc/samba/smb.conf

Ces paramètres qui définissent qui a le droit d’accéder au dossier :

[personnel]
comment = Utilisateurs authentifiés
path = /Chemin2son/dossier/perso
Read only = No
valid users = toto
create mask = 0660

On peut tester la configuration avec la commande ci-dessous :

testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
Processing section "[publique]"
Processing section "[personnel]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions
[...]

Enfin on redémarre le service :

 service smbd restart

Pour s'y connecter depuis une machine cliente dont son système est de type Linux :

mount -t cifs //ip-server/personnel /mnt/ -o user=toto

Il vous sera demandé ensuite un mot de passe pour créer la connexion.

Ou pour accéder aux dossiers via un client accessible via terminal :

smbclient -U toto //ip-server/personnel

Administration via le web

Ceci va pouvoir ce faire grâce à swat!

Téléchargement et installation :

apt-get install swat xinetd

Activer swat avec xinetd :

update-inetd --enable 'swat'
dpkg-reconfigure xinetd

Éditer ou créer le fichier (sans extension) de configuration dans : /etc/xinetd/

nano swat
 
service swat
{
    port = 901
    socket_type = stream
    wait = no
# Use only_from if you want to restrict access
#      only_from = localhost 192.168.56.1
    user = root
    server = /usr/sbin/swat
    log_on_failure += USERID
    disable = no
}

On change les permissions du fichier smb.conf

chmod g+w /etc/samba/smb.conf
chgrp adm /etc/samba/smb.conf

On redémarre le service pour qu'il prenne en compte la configuration :

service xinetd restart

Maintenant, on peut administrer le service depuis la page : http://IP_SERVEUR:901