Créer un NAS avec votre Raspberry Pi et Samba

Pré-requis

Première étape

Autres étapes

Création du serveur NAS avec Samba

É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

Redémarrez samba :

pi@framboise:~ $ sudo systemctl restart smbd

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

Branchez votre disque à votre Raspberry PiDé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.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...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.Montez la partition dans ce dossier :

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

Monter les périphériques au démarrage du 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 Raspberry Pi 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 Raspberry Pi. 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 Raspberry Pi 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/data1etc.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 :

# disque1 (/dev/sdb1) UUID=xxxxxxxxxxx
UUID=xxxxxxxxxxx /media/disque1 ntfs-3g exec,permissions,auto 0 0

UUIDvaleur de l'UUID vue avec blkid, sans les guillemetspoint de montage/media/disque1 (répertoire créé plus haut)ntfs-3gpartition en ntfspermissionspermet de gérer les droits comme pour une partition linux (chown, chmod)
Cas d'une partition ext4

# disque1 (/dev/sdb1) UUID=xxxxxxxxxxx
UUID=xxxxxxxxxxx	/media/disque1	ext4	defaults	0	0

UUIDvaleur de l'UUID vue avec blkid, sans les guillemetspoint de montage/media/disque1 (répertoire créé plus haut)ext4partition en ext4defaultsvaleurs 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 Raspberry Pi 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

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>

éditez avec les droits d'administration le fichier /etc/samba/smb.conf et ajoutez les lignes suivantes à la fin :

[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)

Redémarrez samba :

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

Accès depuis les PCs du réseau

PC sous Windows

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

PC sous Linux

Installez le paquet cifs-utils ou

...@...:~$ sudo apt install cifs-utils

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.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 passecocher retenir toujours (facultatif)Vous pouvez aussi taper Ctrl+L puis :

smb://<serveur>

et naviguer dans les partages.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 :

//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 :

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 normauxnoauto : empêche le montage automatique au démarrage du systèmeOn 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 : username= password=

Conclusion

Problèmes connus

Voir aussi

(fr) https://raspberry-pi.fr/raspberry-pi-nas-samba/(fr) https://www.inpact-hardware.com/article/1013/transformez-votre-raspberry-pi-4-en-nas(en) http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html(fr) Créer un NAS avec Samba sur Raspberry(fr) NAS Raid 1 sur Raspberry(fr) Mise En Place D'un Nas Avec Raid Sur Mon Raspberry Pi (fr) Créer un nas avec le Raspberry Pi

Basé sur << R-Pi NAS >> par elinux.org.