Table des matières

Un serveur NAS sur un Raspberry Pi : partager un disque ou une clé USB sur le réseau

Ce didacticiel montre comment créer à l'aide de samba un serveur NAS (Network Attached Storage = serveur de stockage réseau) sur un Raspberry Pi pour y enregistrer des données en les rendant disponibles sur le réseau local. Ce NAS peut être installé sur :

Ce stockage ne contiendra pas le système et sera juste destiné à recevoir des données.

Faites une sauvegarde : si le disque dur connecté au Raspberry Pi tombe en panne, les fichiers deviendront inaccessibles.

Pré-requis

Dans ce didacticiel, nous supposerons un volume RAID monté en /media/raid0

Première étape

SAMBA est un système de partage de fichiers Windows qui fonctionne sous Linux.

Autres étapes

Création des utilisateurs samba

  1. Ajoutez l'utilisateur samba pi et créez son mot de passe pour samba :

    pi@framboise:~ $ sudo smbpasswd -a pi
    New SMB password:
    Retype new SMB password:

  2. Ajoutez d'autres utilisateurs samba si vous voulez

Montage du disque

  1. Créez un répertoire pour le montage et montez le disque (nommez le répertoire comme vous voulez, raid0 est un exemple) :

    pi@framboise:~ $ sudo mkdir -p /media/raid0/
    pi@framboise:~ $ sudo mount /dev/md0 /media/raid0
    pi@framboise:~ $ lsblk -f /dev/md0
    NAME FSTYPE LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
    md0  ext4         fe1b5cfe-7749-4834-904f-38c1032be9fe   54,4G     0% /media/raid0

  2. Montage automatique au démarrage : éditez avec les droits d'administration le fichier /etc/fstab pour y ajouter la ligne (UUID lu sur le lsblk ci-dessus) :
    /etc/fstab
    UUID=fe1b5cfe-7749-4834-904f-38c1032be9fe    /media/raid0    auto    noatime    0    0
  3. Créez les répertoires pour le NAS :

    pi@framboise:~ $ sudo mkdir -p /media/raid0/nas/{pi-public,pi-ro,pi-perso}
    pi@framboise:~ $ tree /media/raid0/nas/
    /media/raid0/nas/
    ├── pi-perso
    ├── pi-public
    └── pi-ro

    • pi-public : exemple de répertoire accessible en lecture/écriture à tous
    • pi-ro : exemple de répertoire accessible en lecture seule
    • pi-perso : exemple de répertoire privé, réservé à un utilisateur

Mise en place des partages samba

  1. Sauvegardez le fichier de configuration SAMBA :

    pi@framboise:~ $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.dist

  2. éditez avec les droits d'administration le fichier /etc/samba/smb.conf et ajoutez à la fin du fichier les lignes de chaque partage selon les modèles suivants.
    • Section [global] :
      • Pour demander une authentification à la connexion à votre NAS, au-dessous de la ligne “####### Authentication #######”, ajoutez :
        /etc/samba/smb.conf
        ...
        ####### Authentication #######
        security = user
      • Vérifiez ces réglages, corrigez-les sinon :
        /etc/samba/smb.conf
        #Configuration générale
        [global]
            # groupe de travail
            workgroup = WORKGROUP
            # identification de la machine (%h = hostname)
            server string = serveur %h
            # nom du NAS sur le réseau (par défaut, le hostname)
            netbios name = MONNAS
            # ne pas utiliser nslookups pour la résolution des noms NetBIOS.
            dns proxy = no
            
            # un fichier journal par machine
            log file = /var/log/samba/log.%m
            # taille maximum des fichiers journaux en Ko
            max log size = 1000
            syslog = 0
            panic action = /usr/share/samba/panic-action %d
            
            # Authentication
            # gestion de la sécurité par utilisateur
            security = user
            # Active le cryptage du mot de passe
            encrypt passwords = true
            passdb backend = tdbsam
            obey pam restrictions = yes
            # autorise une synchronisation des mots de passe SMB avec ceux de la machine Unix
            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
            map to guest = bad user
            usershare allow guests = yes
    • partage public :
      /etc/samba/smb.conf
      ...
      [pi-public]
          comment = Partage public
          path = /media/raid0/nas/pi-public
          read only = no
          locking = no
          guest ok = yes
          force user = pi
          create mask = 0777
          directory mask = 0777
    • accès réservé à l’utilisateur toto :
      /etc/samba/smb.conf
      ...
      [pi-perso]
          comment = Stockage privé de toto
          path = /media/raid0/nas/pi-perso
          guest ok = no
          username = toto
          only user = yes
          browseable = no
          read only = no
          writable = yes
          create mode = 0600
          directory mask = 0700
    • lecture seule :
      /etc/samba/smb.conf
      ...
      [pi-ro]
          comment = Lecture seule
          path = /media/raid0/nas/pi-ro
          read only = yes
          locking = no
          guest ok = yes
          force user = pi
  3. Vérifiez que vos modifications fonctionnent :

    pi@framboise:~ $ testparm
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    WARNING: The "syslog" option is deprecated
    Load smb config files from /etc/samba/smb.conf
    rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
    WARNING: The "syslog" option is deprecated
    Processing section "[homes]"
    Processing section "[printers]"
    Processing section "[print$]"
    Processing section "[Public]"
    Processing section "[Films]"
    Processing section "[Perso]"
    Unknown parameter encountered: "username"
    Ignoring unknown parameter "username"
    Unknown parameter encountered: "only user"
    Ignoring unknown parameter "only user"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    
    Press enter to see a dump of your service definitions

    S'il s'affiche “Loaded services file OK.”, c'est bon.

  4. Redémarrez le service SAMBA :

    pi@framboise:~ $ sudo systemctl restart smbd.service

Connectez-vous à votre NAS

Conclusion

Problèmes connus

Voir aussi


Basé sur « Build a Raspberry Pi RAID NAS Server – [UPDATED 2020] » par Richie.