Installation d’un serveur de fichier (Samba/NFS)

Objectif

L’objectif de ce tutoriel est de mettre en place un serveur de fichiers (sous Ubuntu/Debian) et que des postes client (Linux et Windows) puissent y avoir accès, le tout de manière sécurisée.
Les postes client sous Windows auront accès au partage en passant par Samba et les postes client sous Linux utiliseront le partage NFS.

Environnement utilisé dans ce tutoriel

Serveurs / Ordinateurs

Le serveur de fichiers sera nommé ServeurA, le client Windows ClientB et le client Linux ClientC

Utilisateurs

Alice et Bob sont deux utilisateurs du système, ils possèdent leur propre compte d’authentification

Charlie est un visiteur – il ne possède pas de compte dans le système

Partages

Plusieurs espaces seront partagés avec des niveaux d’accès différents

  • un répertoire Public, libre d’accès en lecture / écriture pour tous, ainsi qu’aux visiteurs /mnt/public
  • un répertoire Commun, disponible en lecture / écriture seulement pour les utilisateurs du système (Alice et Bob) /mnt/commun
  • un répertoire Ressources, disponible en lecture seule pour tout le monde sauf pour Alice qui a les droits d’écriture /mnt/ressources
  • un répertoire Home, personnel à chaque utilisateur en lecture / écriture /home/alice et /home/bob

Installation des logiciels nécessaires

Avant tout, il faut installer les services SAMBA et NFS

# apt-get install samba nfs-kernel-server

Nous pouvons maintenant passer à la configuration

 

Configuration préliminaire du ServeurA

Création des utilisateurs

Si les utilisateurs existent déjà, vous pouvez passer directement à la configuration de SAMBA

Pour ajouter les utilisateurs Alice et Bob, lancer les commandes suivantes:

# adduser alice
Ajout de l'utilisateur `alice' ...
Ajout du nouveau groupe `alice' (1003) ...
Ajout du nouvel utilisateur `alice' (1003) avec le groupe `alice' ...
Création du répertoire personnel `/home/alice'...
Copie des fichiers depuis `/etc/skel'...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd: password updated successfully
Changing the user information for smbguest
Enter the new value, or press ENTER for the default
        Full Name []: Alice
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Ces informations sont-elles correctes ? [O/n]

# adduser bob
Ajout de l'utilisateur `bob' ...
Ajout du nouveau groupe `bob' (1004) ...
Ajout du nouvel utilisateur `bob' (1004) avec le groupe `bob' ...
Création du répertoire personnel `/home/bob'...
Copie des fichiers depuis `/etc/skel'...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd: password updated successfully
Changing the user information for smbguest
Enter the new value, or press ENTER for the default
        Full Name []: Bob
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Ces informations sont-elles correctes ? [O/n]

Il faut également ajouter un compte supplémentaire, utilisé par Samba pour les connexions anonymes

# adduser --no-create-home smbguest
Ajout de l'utilisateur `smbguest' ...
Ajout du nouveau groupe `smbguest' (1005) ...
Ajout du nouvel utilisateur `smbguest' (1005) avec le groupe `smbguest' ...
Le répertoire personnel `/home/smbguest' n'a pas été créé.
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd: password updated successfully
Changing the user information for smbguest
Enter the new value, or press ENTER for the default
        Full Name []: Samba Visitor Account
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Ces informations sont-elles correctes ? [O/n]

Création des groupes

Après avoir défini les utilisateurs, il faut à présent ajouter les groupes nécessaires:

  • un groupe smbcommun pour les utilisateurs ayant accès au répertoire commun
  • un groupe smbressources pour les utilisateurs ayant accès au répertoire ressources
# addgroup smbcommun
# addgroup smbressources

puis ranger les utilisateurs dans les groupes correspondant à la stratégie définit au début du tutoriel.

# adduser alice smbcommun
# adduser alice smbressources
# adduser bob smbcommun
# adduser bob smbressources

Création et attribution des droits sur les répertoires

# mkdir -p /mnt/public /mnt/commun /mnt/ressources
# chown smbguest:smbguest /mnt/public ; chmod 777 /mnt/public
# chown alice:smbcommun /mnt/commun ; chmod 770 /mnt/commun
# chown alice:smbressources /mnt/ressources ; chmod 750 /mnt/ressources

Configuration du service SAMBA (pour les clients Windows)

Configuration générale

La configuration de Samba se trouve dans le fichier /etc/samba/smb.conf

La première chose à faire est de déterminer le niveau de sécurité de Samba. Il existe 2 niveaux share et user

  • Le niveau share permet de faire du partage simple de fichiers, imprimantes, sans authentification
  • Le niveau user mieux sécurisé, force l’envoi d’informations d’authentification de la part du client. Cela permet de mettre en place un stratégie de droits d’accès. C’est ce niveau qui sera utilisé dans ce tutoriel.

Le niveau de sécurité se définit par l’option suivante:

security = user

Dans les dernières version de Samba, il est définit par défaut.

Il faut ensuite renseigner le nom du Groupe de Travail windows (WORKGROUP) ainsi que le nom de la machine

workgroup = KNS7
server string = %h

Le groupe de travail (qui devrait être le même entre les postes windows et le serveur) sera dans cet exemple KNS7 et le nom du serveur, celui correspondant au hostname (variable %h)

Afin de sécuriser l’envoi de mots de passe, il faut les chiffrer

encrypt passwords = true

Le paramètre suivant va permettre de synchroniser les mots de passe UNIX et Samba pour les utilisateurs

unix password sync = yes

Afin qu’un utilisateur anonyme ne soit pas rejeté, mais vu par samba comme un compte invité,  on va mapper le compte smbguest (créé plus haut) avec un utilisateur invité.

map to guest = bad user

voici le récapitulatif de la configuration globale

[global]
workgroup = KNS7
server string = %h
security = user
encrypt passwords = true
unix password sync = yes
map to guest = bad user

Configuration des Partages

Partage public

Le partage public sera accessible par tous, en lecture / écriture, même pour les visiteurs

[public]
comment = Espace public
path = /mnt/public
browseable = yes
read only = no
guest ok = yes
force group = smbguest
create mask = 0666
directory mask = 0777

Le premier paramètre comment permet simplement de définir une description au partage. C’est juste informel.
Le second paramètre, path définit le chemin physique du partage.
Le paramètre browseable indique si le partage est visible depuis l’explorateur (windows ou linux)
Le paramètre read only, définit à no autorise les utilisateurs à écrire dans ce répertoire
Le paramètre guest ok, définit à yes autorise les connexions anonymes sur ce partage
Les 3 derniers paramètres permettent de définir comment vont être créés les répertoires et fichiers. Ils auront comme propriétaire l’utilisateur l’ayant créé/copié, comme groupe propriétaire smbguest et comme droits:

  • rw-,rw-,rw- pour les fichiers
  • rwx,rwx,rwx pour les répertoires

Ainsi, les répertoires et fichiers auront toujours les mêmes propriétaires et le mêmes droits à la création. Il seront accessible aux autres utilisateurs.

Partage commun

Le partage commun sera seulement accessible par le groupe smbcommun en lecture / écriture

[commun]
comment = Espace commun
path = /mnt/commun
browseable = yes
read only = no
guest ok = no
force group = smbcommun
create mask = 0760
directory mask = 0770
valid users = @smbcommun
write list = @smbcommun

Sur ce partage commun, l’utilisateur anonyme n’est plus autorisé (guest ok = no) et deux autres paramètres supplémentaires ont été ajouté:

valid users qui définit qui a le droit d’accès sur ce partage et write list qui définit qui a les droits d’accès en écriture. Dans ce cas précis, le groupe smbcommun a été autorisé (un groupe commence par un @)

Partage ressources

Le partage ressources sera accessible par les membres du groupe smbressources en lecture seule et seulement par Alice en lecture / écriture

[ressources]
comment = Ressources
path = /mnt/ressources
browseable = yes
read only = no
guest ok = no
force user = alice
force group = smbressources
create mask = 0740
directory mask = 0750
valid users = @smbressources
read list = @smbressources
write list = alice

Sur ce partage ressources, l’utilisateur n’a pas non plus de droits d’accès. La différence avec Commun, c’est qu’Alice sera autorisée à écrire alors que les membres du groupe smbressources ne pourront que lire le contenu. Pour cela:

valid users est définit au groupe smbressources
les droits de lecture read list est donné au groupe smbressources
et les droits d’écriture write list à l’utilisatrice alice

Partage du répertoire personnel (Home)

Le partage du répertoire personnel n’est accessible que par l’utilisateur concerné. Les autres n’ont aucun droit d’accès. Pour plus de sécurité, ceux-ci ne seront pas visible.

Samba fournit un partage spécifique pour les répertoires personnels. Il suffit de créer un partage [homes]

[homes]
comment = Répertoire personnel
browseable = no
read only = no
create mask = 0640
directory mask = 0750
valid users = %S

Afin de mapper directement le bon utilisateur avec son répertoire personnel, le paramètre valid users a comme valeur %S (qui sera automatiquement remplacé par l’utilisateur correspondant)

Il est important de préciser que Samba ne devrait être utilisé que sur un réseau local et non via Internet pour des raisons évidentes de sécurité!

 

Configuration du service NFS (pour les clients Linux) 

Il existe pour les clients Linux un outil de partage très perfomant (plus que Samba) qui se nom NFS (Network File System). La version du protocole utilisée dans ce  tutoriel est la 4 (la plus actuelle, perfomante et sécurisée).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *