Outils personnels
Vous êtes ici : Accueil Linux Installer un serveur de fichiers (et de messagerie) Installer le serveur de fichiers : SAMBA

Installer le serveur de fichiers : SAMBA

Par Freecrazy - Dernière modification 12/10/2017 14:33

Compte tenu de l'hétérogénéité de mon réseau (Windows et Linux), nous utiliserons le serveur Samba qui utilise le protocole de partage de fichiers propre à Windows (CIFS anciennement SMB) mais qui bien sûr est géré aussi par Linux.

Pour rappel : l'idée ici est de construire un serveur de fichiers de niveau familial, donc de moins d'une dizaine de micros qui de plus sont hétérogènes (différents Linux, différents Windows). Il n'y a donc aucune prétention à construire une solution d'entreprise, forcément plus sophistiquée, comme un Contrôleur Principal de Domaine (PDC). Ceux que cela intéresse feront une recherche sur le net avec "samba pdc" comme mots clés.

Cependant la configuration présentée ici a le mérite d'être (relativement) simple et de bien cloisonner les accès en fonction des droits de chacun.

1 - Le paquetage logiciel nécessaire (samba-server)

Le serveur Samba (notre serveur de fichiers au protocole Microsoft) fonctionne à l'aide du paquetage samba-server. Il nous faut donc l'installer si ce n'est pas déjà fait.

L'installation via l'interface graphique est le plus simple, mais lorsqu'on sait exactement ce que l'on doit installer, la ligne de commande (en administrateur) est toute aussi simple. Ici, il s'agit de la commande sous Mandriva, vous l'adapterez selon votre distribution (apt-get pour Debian, emerge pour Gentoo, etc.) :

# urpmi samba-server

 2 - Premières configurations de Samba

Le Centre de Contrôle Mandriva (CCM) permet d'effectuer les premières configurations en mode graphique de manière aisée. Mais elle n'évitera pas de passer par le fichier /etc/smb.conf, donc autant y aller de suite.

A noter qu'il existe d'autres façon de configurer graphiquement Samba avec Swat qui lui est dédié ou encore Webmin (je n'ai pas d'avis, je n'ai testé ni l'un ni l'autre)

3 - Ajustement de la configuration via le fichier smb.conf

Vous pouvez effectuer tout le paramétrage de votre serveur Samba via le fichier /etc/samba/smb.conf. C'est même un incontournable pour quelques ajustements.

3.1 - Les paramétrages essentiels

Les essentiels sont en fait ceux que nous mettons via l'interface graphique.

Même si smb.conf comprend près de 300 paramètres, il restera ici assez simple. Cependant la consultation du man smb.conf reste comme toujours très instructive.

En effet notre configuration est basique et de nombreuses valeurs par défaut peuvent être garder. Les modifications indiquées ci-dessous sont apportées au smb.conf initial sans aucune configuration graphique préalable.

Pour s'y retrouver, smb.conf se découpe en 2 grandes sections :

  1. Globals settings
  2. Nous y trouverons (en gras ce qu'il faut modifier, attention certaines valeurs sont mes choix, donc à adapter en fonction des vôtres):

    # Nom de domaine ou de workgroup
    workgroup = Famille
    # La bannière (par défaut à %h = hostname)
    server string = Serveur Samba %v
    # Nom de la machine (par défaut le hostname du serveur)
    netbios name = Xena
    

    Pour le reste on garde les valeurs par défaut, entre autres :

    # 3. Logging Options
    log file = /var/log/samba/%m.log
    max log size = 50
    map to guest = bad user
    # Important le niveau de sécurité
    security = user
    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd

     Un petit complément sur security = user : cela indique que samba demandera une authentification, et dans mon choix le mot de passe samba de chaque utilisateur sera le mot de passe de session de l'utilisateur à son ordinateur. Ainsi l'ouverture d'une session sur un ordinateur Windows permet la reconnaissance automatique des espaces Samba accessibles à l'utilisateur (c.a.d ici à son /home/<user>/Documents/ et /mnt/{famille, media et archives})

  3.  Share Definitions
  4. Partie qui comme son nom l'indique permet de définir ce que l'on partage. Cette partie fera l'objet d'ajustements, car pour l'instant on a (par défaut) :

    [homes]
       comment = Home Directories
       browseable = no
       writable = yes

    Ce qui donne effectivement l'accès aux /home/<utilisateur> et à eux seuls (si les droits ont bien été mis).

    Et pour ce qui est d'un dossier partagé défini via le CCM, il apparaît comme ceci :

    [Média]
       path = /etc/media
       comment = Vidéos et Musique

     Ici l'accès est pour tous.

    Nota : dans cette section, figure également toute une partie sur les imprimantes (dans les versions antérieures c'était une section à part entière). Pour l'instant cela ne gêne en rien et donc je laisse tel quel.

3.2 - Les ajustements indispensables

 Les ajustements ne concernent que les "share settings".

Commençons par les "homes", il nous faut ajouter :

[homes]
   path = /home/%U/Documents
   comment = Home Directories
   browseable = no
   writable = yes
   create mask = 0700
   directory mask = 0700

 Le path se comprend aisément, puisque %U représente le nom de l'utilisateur connecté et comme je voulais pointer sur Documents et non sur /home/<user> ...

Les 2 autres lignes supplémentaires contraignent tout ajout de document ou de répertoire à respecter le mode (droits) des /home/<user>, à savoir 700 soit rwx pour l'utilisateur seul. Ainsi on assure à chaque utilisateur que personne d'autre ne pourra venir visiter son dossier personnel (sauf l'administrateur sur le serveur bien sûr)

Nota : avec create mask à 700 on autorise l'exécution des fichiers exécutables, ce qui n'est certainement pas souhaitable, ni recommandable ==> il vaut mieux positionner create mask = 600. Par contre pour directory le 700 reste obligatoire, sinon vous ne traverseriez pas les dossiers.

Pour les dossiers communs sous /mnt, la logique est la même, avec 2 particularités :

  • il faut les spécifier un à un
  • ils doivent être accessibles aux membres du groupe 'famille'

Cela donne ces lignes :

[Famille]
   path = /mnt/famille
   comment = Photos entre autres
   public = no
   writable = yes
   create mask = 0660
   directory mask = 0770
   
[Média]
   path = /mnt/media
   comment = Vidéos et Musique
   public = no
   writable = yes
   create mask = 0660
   directory mask = 0770

[Archives]
   path = /mnt/archives
   comment = Iso et autres vieilleries
   public = no
   writable = yes
   create mask = 0660
   directory mask = 0770

4 - Création des utilisateurs Samba

Avant de lancer le serveur, il faut lui indiquer quels sont les utilisateurs de ce service. Cette création se fait à l'aide de la commande smbpasswd. En effet cette commande que l'on pourrait croire vouée exclusivement au changement de mot de passe est fonctionnellement plus riche selon qu'elle est lancée par un utilisateur ou par root. Et justement, lancée par root elle permet, avec l'option -a, d'inscrire un nouvel utilisateur samba avec son mot de passe (si ce couple 'login', 'password' n'est pas déjà connu de la machine, il est alors inscrit dans le fichier /etc/samba/smbpasswd ). Sur l'exemple ci-dessous, je m'inscris.

smbpasswd_freecrazy

Nota : famille n'est pas vraiment un utilisateur samba, il n'est donc pas utile de le créer

5 - Lancement du serveur Samba

 Voilà votre serveur samba est configuré, vos utilisateurs créés, il n'y a plus qu'à le démarrer par :

# /etc/init.d/smb start

Nota : si vous faites des modifications à vos paramétrages (smb.conf), n'oubliez pas de relancer votre serveur avec :

# /etc/init.d/smb restart

Pour stopper le serveur, vous aurez deviné qu'il suffit de remplacer start par stop.

Avant de passer côté client ce qui sera vu dans un autre article, n'oubliez pas de configurer correctement le pare-feu de votre serveur. Pour ce serveur de fichiers il vous faut autoriser dans CCM > Sécurité > Pare-feu, les partages de fichiers Windows comme ceci :

Config Samba 10 (post) : laisser passer les flux SMB


Pour terminer, quelques liens intéressants :

Actions sur le document