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… :-)

Créer un NAS avec votre Raspberry Pi et Samba

Pré-requis

Première étape

Autres étapes

Création du serveur NAS avec Samba

  1. Éditez avec les droits d'administration le fichier /etc/samba/smb.conf

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

    pour le modifier comme ceci :

    • Enfin, tout en bas du fichier, ajoutez des paramètres relatifs à l’accès à la partie publique du NAS :
      [public]
        comment = Public Storage
        path = /home/shares/public
        valid users = @users
        force group = users
        create mask = 0660
        directory mask = 0771
        read only = no
  2. Redémarrez samba :

    pi@framboise:~ $ sudo systemctl restart smbd

  3. Ajoutez un utilisateur à samba, ici nous ajoutons l’utilisateur pi :

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

Voir la configuration de /etc/samba/smb.conf : smb.conf : le fichier de configuration de Samba

Ce qui marche :

...
[share]
Comment = Shared Folder
Path = /mnt/usb
Browseable = yes
Writeable = Yes
only guest = no
create mask = 0777
directory mask = 0777
Public = yes
Guest ok = yes

penser à ouvrir ufw :

pi@framboise:~ $ sudo ufw allow samba
Rule added
Rule added (v6)

Ajouter un disque

  1. Branchez votre disque à votre Raspberry Pi
  2. Détectez le nom que le Raspberry lui a attribué :

    pi@framboise:~ $ lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    <...>
    sdb           8:16   1   125G  0 disk 
    └─sdb1        8:17   1   125G  0 part /media/pi/BCB9-8CFD
    <...>

    Ici, la clé est sdb avec une partition sdb1.

  3. Formatez la partition en ext4 :

    pi@framboise:~ $ sudo umount /dev/sdb1
    pi@framboise:~ $ sudo mkfs.ext4 /dev/sdb1

    Soyez patient : l'opération est longue…

  4. Créez un répertoire pour monter le disque pour qu’il soit accessible via le NAS, et donnez-lui les droits de lecture/écriture nécessaires :

    pi@framboise:~ $ sudo mkdir /home/shares/public/donnees
    pi@framboise:~ $ sudo chown -R root:users /home/shares/public/donnees
    pi@framboise:~ $ sudo chmod -R ug=rwx,o=rx /home/shares/public/donnees

    Peu importe le nom du dossier (donnees dans l’exemple) Le nom du dossier (disk1 dans l’exemple) importe peu, il vous permettra de le retrouver aisément sur le réseau.

  5. Montez la partition dans ce dossier :

    pi@framboise:~ $ sudo mount /dev/sdb1 /home/shares/public/donnees/

  6. Monter les périphériques au démarrage de la raspberry pi :éditez avec les droits d'administration le fichier /etc/fstab et pour chaque périphérique, rajoutez en bas du fichier une ligne :
    /dev/sdb1 /home/shares/public/donnees auto noatime,nofail 0 0

Repérage des partitions

Avant de brancher le disque, lister les partitions du RPI en lançant :

$ pi@framboise:~ $ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 232,9G  0 disk 
...

Brancher le disque dur sur une prise USB du RPI. Relancer :

$ pi@framboise:~ $ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb           8:16   1   125G  0 disk 
└─sdb1        8:17   1   125G  0 part 
sda           8:0    0 232,9G  0 disk 
...

Les lignes apparues correspondent aux partitions du disque (s'il y a plusieurs lignes, c'est que le disque a plusieurs partitions)

Dans cet exemple, le RPI est installé sur /dev/sda (avec un pidrive).

le disque dur que nous venons de connecter est /dev/sdb et a une partition /dev/sdb1 qui va nous servir.

Repérez son UUID :

$ pi@framboise:~ $ sudo blkid /dev/sdb*
/dev/sdb: PTUUID="876fbad3" PTTYPE="dos"
/dev/sdb1: PARTUUID="876fbad3-01"

Partitionnement

Création de l'arborescence de montage

Vous pouvez utiliser par exemple des sous-répertoires de /media

Les partitions de la clé à installer sont repérées, par exemple :

  • la partition /dev/sdb1, en vfat, de label data1, sera montée sur le répertoire /media/data1
  • etc.

Le nouveau disque est /dev/sdb. Simplifiez l'affichage avec :

pi@framboise:~ $ sudo blkid /dev/sdb*
/dev/sdb: PTUUID="876fbad3" PTTYPE="dos"
/dev/sdb1: UUID="7FE1-97D6" TYPE="vfat" PARTUUID="876fbad3-01"

Repérez les partitions montées par :

pi@framboise:~ $ sudo blkid /dev/sdb*
/dev/sdb: PTUUID="876fbad3" PTTYPE="dos"
/dev/sdb1: UUID="7FE1-97D6" TYPE="vfat" PARTUUID="876fbad3-01"

Si elles sont montées, démontez la ou les partitions repérées et créez les répertoires de montage, par exemple pour deux partitions :

pi@framboise:~ $ sudo umount /dev/sdb1
pi@framboise:~ $ sudo mkdir -p /media/{disque1,disque2}

Montage automatique au démarrage (fichier fstab)

Éditez avec les droits d'administration le fichier /etc/fstab pour ajoutez une ligne pour chaque partition du disque :

  • cas d'une partition ntfs :
    /etc/fstab
    # disque1 (/dev/sdb1) UUID=xxxxxxxxxxx
    UUID=xxxxxxxxxxx    /media/disque1       ntfs-3g exec,permissions,auto   0       0
UUID
valeur de l'UUID vue avec blkid, sans les guillemets
point de montage
/media/disque1 (répertoire créé plus haut)
ntfs-3g
partition en ntfs
permissions
permet de gérer les droits comme pour une partition linux (chown, chmod)
  • Cas d'une partition ext4
    /etc/fstab
    # disque1 (/dev/sdb1) UUID=xxxxxxxxxxx
    UUID=xxxxxxxxxxx	/media/disque1	ext4	defaults	0	0
UUID
valeur de l'UUID vue avec blkid, sans les guillemets
point de montage
/media/disque1 (répertoire créé plus haut)
ext4
partition en ext4
defaults
valeurs par défaut

Montez tout ce qui est décrit dans fstab en tapant :

pi@framboise:~ $ sudo mount -a

Pour rendre propriétaires l'utilisateur pi et le groupe pi, tapez :

pi@framboise:~ $ sudo chown -R pi:pi /media/disque1/

Pour vérifier (ici, la partition /media/disque1) :

pi@framboise:~ $ ls -l /media/disque1
...
drwxr-xr-x 2 pi pi   4096 janv. 17  2018 xxxxx

Le propriétaire et le groupe sont pi et les droits sont rwx. Les permissions sont donc réglables.

Désormais, le RPi monte son disque tout seul au démarrage.

Ouvrir l'accès à tout le réseau

Connectez-vous au Raspberry Pi, via ssh ou vnc.

  • Faites une copie du fichier de configuration de samba :

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

section sous-section remplacer par
[global]
   workgroup = WORKGROUP
le groupe de travail voulu
[global] ##### Authentication ##### dé-commenter
#    security = user
    security = user
[homes]
read only = yes
read only = no
  • Redémarrez samba :

    pi@framboise:~ $ sudo /etc/init.d/samba restart

Définition des utilisateurs pour samba

L'utilisateur pi est déjà défini par défaut. rendez-le utilisateur samba :

pi@framboise:~ $ sudo smbpasswd -a pi

et donnez deux fois le mot de passe samba de pi comme demandé.

Configurer une zone de stockage publique sur le Raspberry Pi

  1. Créez un répertoire pour stocker les fichiers publics :

    pi@framboise:~ $ sudo mkdir /media/<Disque_NAS>

    et donnez-lui les droits voulus :

    • propriétaire : pi, groupe pi

      pi@framboise:~ $ sudo chown -R pi:pi /media/<Disque_NAS>

    • droits :

      pi@framboise:~ $ sudo chmod -R ug=rwx,o=rx /media/<Disque_NAS>

  2. éditez avec les droits d'administration le fichier /etc/samba/smb.conf et ajoutez les lignes suivantes à la fin :
    /etc/samba/smb.conf
    [NAS_disque]
    	comment = NAS_disque
    	path = /media/<Disque_NAS>
    	valid users = @pi
    	force group = pi
    	create mask = 0660
    	directory mask = 0771
    	read only = no

    → Ce disque sera vu cumme “nas_disque” (en minuscules)

  3. Redémarrez samba :

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

Accès depuis les PCs du réseau

PC sous Windows

  1. Un clic droit sur le poste de travail, ajouter un lecteur réseau.
  2. Renseignez :
    • la lettre à utiliser pour ce disque
    • le répertoire, de la forme : \\framboise.local\Disque_NAS ou \\192.168.0.31\nas_disque
    • pour un utilisateur enregistré : son nom
    • pour la zone publique, son répertoire
    • cochez “reconnecter au démarrage”
  3. Il est demandé un nom et un mot de passe :
    • Fournir ceux d'un utilisateur enregistré sur samba du RPi.
    • Pour la zone publique, n'importe quel nom convient.

PC sous Linux

Installez le paquet cifs-utils ou

...@...:~$ sudo apt install cifs-utils
  1. Monter le NAS en ligne de commande :

    ...@...:~$ sudo mount -t cifs -o username=pi,password=PASSWD //framboise.local/nas_disque /media/nas_disque

    en complétant le mot de passe. Le montage se fait et le disque apparaît dans Nautilus.

  2. Monter le NAS graphiquement :
    • Ouvrez nautilus, tapez Ctrl+L et entrer :

      smb://<serveur>/<partage>

      • <serveur> = adresse IP ou nom d'hôte du Raspberry Pi
      • <partage> = répertoire auquel se connecter.
    • Renseignez :
      • l'utilisateur (pi)
      • le mot de passe
      • cocher retenir toujours (facultatif)
    • Vous pouvez aussi taper Ctrl+L puis :

      smb://<serveur>

      et naviguer dans les partages.

  3. Monter le NAS en permanence :
    • Créez un répertoire de montage, par exemple :

      ...@...:~$ sudo mkdir /media/disque_NAS

    • Éditez avec les droits d'administration le fichier /etc/fstab pour ajouter la ligne :
      /etc/fstab
      //framboise.local/nas_disque	/media/disque_NAS	cifs	credentials=/etc/framboise.credentials    0    0
    • Créez avec les droits d'administration le fichier /etc/framboise.credentials contenant le nom d'utilisateur et son mot de passe :
      /etc/framboise.credentials
      username=pi
      password=<password>
    • Protégez les fichiers credentials :

      ...@...:~$ sudo chmod 600 /etc/*.credentials

    • D'autres options (séparées par des virgules) peuvent être ajoutées au fichier /etc/fstab :
      • user : permet le montage par les utilisateurs normaux
      • noauto : empêche le montage automatique au démarrage du système
    • On peut aussi monter les entrées de /etc/fstab à la main en exécutant une de ces trois commandes :
      • ...@...:~$ sudo mount //192.168.0.31/nas_disque
        ...@...:~$ sudo mount //framboise.local/nas_disque
        ...@...:~$ sudo mount /disk/disque_NAS

Pour une freebox, on utilise la même méthode avec un fichier /etc/freebox.credentials sans user ni mdp :

/etc/freebox.credentials
username=
password=

Conclusion

Problèmes connus

Voir aussi