Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Ceci est une ancienne révision du document !


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

  • un Raspberry Pi avec ses accessoires (alimentation, boîtier,carte µSD, Raspbian installé et configuré)
  • connecté au réseau local (câble Ethernet ou wi-fi)
  • un disque, une clé USB ou un volume RAID. Nous prendrons l'exemple de deux clés de 64 G en RAID 1
  • un Hub USB 3.0 alimenté.

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.

  • Mettez à jour Raspbian et installez samba,exfat-fuse,exfat-utils,dosfstools,ntfsprogs :

    pi@framboise:~ $ sudo apt update
    pi@framboise:~ $ sudo apt upgrade
    pi@framboise4:~ $ sudo apt install samba exfat-fuse exfat-utils dosfstools ntfsprogs

    Si des questions vous sont posées, sélectionnez la réponse par défaut.

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] : 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 = Mon dossier secret
          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

Configuration du partage local des disques

  1. éditez avec les droits d'administration le fichier /etc/samba/smb.conf pour le modifier comme ceci :
    • Section [global] : Vérifiez ces réglages, corrigez-les sinon :
      /etc/samba/smb.conf
      #Configuration générale
      [global]
          # nom du groupe de travail
          workgroup = WORKGROUP
          # identification de la machine (habituellement quelque chose comme Serveur Samba)
          server string = %h server
          
          # 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
    • A la fin, ajoutez les partages :
      /etc/samba/smb.conf
      ...
      # Nos différents partages : vous pouvez en créer plusieurs à partir de ces 3 modèles selon vos besoins
      
      [Films]
          comment = Stockage en lecture seule
          path = /media/USB1/MONNAS/Films
      ;   lecture seule
          read only = yes
          locking = no
          guest ok = yes
          force user = pi
      
      [Perso]
          comment = Stockage privé
          browseable = no
          path = /media/USB1/MONNAS/Perso
          writable = yes
          username = Toto
          only user = yes
          create mode = 0600
          directory mask = 0700

Création du NAS

Connectez-vous à votre NAS

Conclusion

Problèmes connus

Voir aussi