Cet article fait partie d’une série :

Introduction

Le partage de fichier en réseau est sans aucun doute la partie la plus importante d’un NAS.
Ainsi, après avoir créé les espaces de stockage à proprement parler dans l’article précédent, nous allons ici mettre en place leur partage :

Installation

$ sudo apt install samba

Configuration

Permissions

Les permissions doivent être ajustées pour permettre aux utilisateurs d’accéder aux répertoires partagés et en modifier le contenu.

  1. Pour cela, il faut donner les droits d’écriture au répertoire racine des partages au groupe  :
    $ sudo chgrp -R users /tank/*
    
  2. Et parametrer le SGID sur les partages
    $ sudo chmod 2775 /tank/{videos,photos,books,misc,music,backups}
    $ sudo chmod 2750 /tank/users
    

Compléments d’information sur la configuration du SGID :

Général

  1. Faire une sauvegarde du fichier configuration du serveur Samba d’origine :

    $ sudo mv /etc/samba/smb.conf{,.orig} 
    
  2. Et créer un nouveau fichier vide

    $ sudo vim /etc/samba/smb.conf
    
    [global]
      # Server information
      netbios name = nastest
      workgroup = WORKGROUP
      server string = %h Fileserver
    
      fruit:aapl = yes
    
      # Logging
      logging = syslog
    
      # Authentication
      security = user
      passdb backend = tdbsam
      map to guest = Bad Password
      guest account = nobody
      obey pam restrictions = yes
      unix password sync = yes
      passwd program = /usr/bin/passwd %u
      passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
      pam password change = yes
    
      # Name resolution: make sure \\NETBIOS_NAME\ works
      wins support = yes
      local master = yes
      domain master = yes
      preferred master = yes
    
      # Don't load printers
      load printers = no
      printing = bsd
      printcap name = /dev/null
      disable spoolss = yes
    
      # Extra options for Sonos (non recommandé)
      ntlm auth = ntlmv1-permitted
    
    • Information sur le serveur

      • netbios name = nastest : nom d’hôte du serveur,

      • workgroup = WORKGROUP : le workgroup dans lequel le serveur apparaît,

      • server string = %h Fileserver : le nom qui apparaîtra dans les gestionnaires d’imprimante ou dans la navigation réseau.

      • fruit:aapl = yes : activation du module d’interopérabilité avec Netatalk et les implémentations Apple de SMB.

    • Traçabilité

      • logging = syslog : défini le moteur de traçabilité.
    • Authentification

      • security = user : modèle de sécurité pour les serveurs Samba en standalone, qui définit que les utilisateurs doivent être authentifiés pour accéder aux ressources,
      • passdb backend = tdbsam : défini le moteur pour stocker les utilisateurs et leurs mots de passe,
      • map to guest = Bad Password : défini que les tentatives authentification échouées pour mauvais mot de passe seront renvoyées vers le compte guest,
      • guest account = nobody : défini le nom d’utilisateur du compte guest,
      • obey pam restrictions = yes : défini que Samba doit suivre les directives du module PAM pour les comptes et sessions,
      • unix password sync = yes : défini que Samba doit tenter de synchroniser le mot de passe système lors d’un changement du mot de passe Samba (l’inverse n’est pas possible),
      • passwd program = /usr/bin/passwd %u : défini le chemin du binaire utilisé pour réaliser le changement du mot de passe système,
      • passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . : défini la séquence de changement de mot de passe système,
      • pam password change = yes : défini de préférer le changement de mot de passe par PAM.
    • Résolution de nom (p. e. \NETBIOS_NAME)

      • wins support = yes : défini que le serveur Samba jouera le rôle de serveur WINS pour fournir un service de résolution de nom NetBIOS aux clients (nmbd),
      • local master = yes : défini que le serveur doit être le master nmbd sur le réseau,
      • domain master = yes : défini que le serveur doit être le master nmbd pour le domaine,
      • preferred master = yes : défini que nmbd est le master préféré pour son workgroup.
    • Ne pas charger les imprimantes

      • load printers = no : ne pas charger les imprimantes,
      • printing = bsd : défini comment les informations de statut des imprimantes est interprété par le système.
      • printcap name = /dev/null : redéfini le printcap name utilisé par défaut par le système,
      • disable spoolss = yes : désactive le support de SPOOLSS pour Samba.
    • Options supplémentaires pour Sonos (qui ne supporte pas SMBv3 - non recommandé pour des raisons de sécurité)

      • server min protocol = NT1 : défini la version minimum que le serveur autorise pour les clients,
      • ntlm auth = ntlmv1-permitted : autorise l’authentification avec NTLMv1 (et supérieur), qui est obsolète.

Partages

Voici à quoi ressemble un bloc de configuration pour un partage (à ajouter à la fin du fichier /etc/samba/smb.conf) :

[videos]
  comment = Videos
  path = /tank/videos
  public = True
  guest ok = True
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775

Partages utilisateurs

Les répertoires utilisateurs (ou home folders) sont gérés un peu différemment. Un seul partage est créé, mais avec une variable permettant à chaque utilisateur d’accéder à son propre répertoire.

Voici à quoi ressemble le bloc de configuration du partage :

[homes]
  comment = users share
  path = /tank/users/%S
  valid users = @users
  browseable = No
  writable = True
  create mask = 0600
  force create mode = 0600
  directory mask = 0700
  force directory mode = 0700

La configuration complète est disponible en annexe (en bas de l’article).

Vérification

Il est ensuite possible de tester la configuration (pour vérifier si elle contient des erreurs) avec la commande suivante :

$ sudo testparm 
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

Application

Pour appliquer les changements de configuration réalisés, il est nécessaire de redémarrer le service Samba :

$ sudo systemctl restart smbd.service 

Utilisateurs

  1. Si l’utilisateur n’est pas déjà présent dans le système, il sera nécessaire de le créer (sinon passer à l’étape 3) :

    $ useradd -M -s /sbin/nologin <utilisateur>
    
    • L’option -M permet de ne pas créer de répertoire utilisateur dans /home,
    • L’option -s /sbin/nologin indique que cet utilisateur n’aura pas accès à un shell.
  2. Activer le compte en lui créant un mot de passe (qui ne sera pas utilisé, car l’utilisateur n’a pas de shell valide, mais il est nécessaire d’activer le compte pour samba) :

    $ passwd <utilisateur>
    
  3. Ajouter l’utilisateur dans le groupe users (si ce n’est pas déjà le cas) :

    $ sudo usermod -aG users brice
    
  4. Enfin pour créer le compte Samba :

    $ sudo smbpasswd -a <utilisateur>
    [sudo] Mot de passe de brice : 
    New SMB password:
    Retype new SMB password:
    Added user brice.
    

    Il peut être le même que pour le compte système.

  5. Il est enfin nécessaire de créer le répertoire des utilisateurs et d’en ajuster le propriétaire et ses permissions :

    $ sudo mkdir /tank/users/brice
    $ sudo chown brice: /tank/users/brice
    $ sudo chmod 700 /tank/users/brice
    

Bonus :
Pour modifier un mot de passe Samba, on peut utiliser la commande suivante :

$ sudo smbpasswd <utilisateur>

Sources :


Vous pouvez aller à l’article suivant pour poursuivre la construction du NAS : #4 − Relais mail.


Annexe 1 : Configuration complète

[global]
  # Server information
  netbios name = nastest
  workgroup = WORKGROUP
  server string = %h Fileserver

  fruit:aapl = yes

  # Logging
  logging = syslog

  # Authentication
  security = user
  passdb backend = tdbsam
  map to guest = Bad Password
  guest account = nobody
  obey pam restrictions = yes
  unix password sync = yes
  passwd program = /usr/bin/passwd %u
  passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  pam password change = yes

  # Name resolution: make sure \\NETBIOS_NAME\ works
  wins support = yes
  local master = yes
  domain master = yes
  preferred master = yes

  # Don't load printers
  load printers = no
  printing = bsd
  printcap name = /dev/null
  disable spoolss = yes

  # Extra options for Sonos (non recommandé)
  ntlm auth = ntlmv1-permitted

[videos]
  comment = Videos
  path = /tank/videos
  public = True
  guest ok = True
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775

[music]
  comment = Music
  path = /tank/music
  public = True
  guest ok = True
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775

[books]
  comment = Books
  path = /tank/books
  public = True
  guest ok = True
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775

[photos]
  comment = Photos
  path = /tank/photos
  public = True
  guest ok = True
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775

[misc]
  comment = Misc
  path = /tank/misc
  public = True
  guest ok = True
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775

[backups]
  comment = Backups
  path = /tank/backups
  browseable = True
  writable = True
  create mask = 0664
  force create mode = 0664
  directory mask = 0775
  force directory mode = 0775
  valid users = @users

[homes]
  comment = users share
  path = /tank/users/%S
  valid users = @users
  browseable = No
  writable = True
  create mask = 0600
  force create mode = 0600
  directory mask = 0700
  force directory mode = 0700
nas  debian  tech  samba