Un NAS avec un Raspberry Pi

L’objectif de ce projet est de disposer d’un serveur de fichiers pour la maison ou le bureau, à moindre coût. Le Raspberry Pi est donc particulièrement adapté, comme base, à ce projet. Il est possible de connecter un ou deux disques dur externe en USB ou d’utiliser simplement une carte SD d’une capacité suffisante.

Première étape l’OS. Pour un serveur, il est inutile de disposer d’une interface graphique ou des nombreux logiciel présents dans une distribution normale. Une version minimaliste de Debian est par exemple amplement suffisante. Chris Boot propose sur son blog une image Debian de ce type.

La procédure permettant de charger un fichier .img sur une carte SD est détaillée sur le site eLinux.

Une fois le Raspberry Pi branché et avant de débuter l’installation des composants nécessaires à ce projet, une mise à jour de la distribution est judicieuse.

apt-get update
apt-get upgrade

L’image minimaliste de Debian ne dispose pas d’outils de prise de main à distance du serveur. L’avantage dans le cas présent est double. D’une part, il permet de disposer des 2 ports USB et ne nécessite pas de le connecter à un écran. D’autre part, il est ainsi possible de mettre le serveur n’importe où dans la maison et pourquoi pas dans un endroit difficilement accessible.
En général SSH (secure shell) est l’outil préféré du monde Unix. Ici l’application client serveur OpenSSH est utilisée.

apt-get install openssh-server

L’utilisation de SSH n’est pas décrite ici, mais de nombreuses ressources sont disponibles sur le web.

Samba

Le logiciel en charge du partage de fichiers sera Samba. On retrouve Samba dans de nombreux serveurs NAS comme les Synology par exemple.

apt-get install samba samba-common-bin

Les services smbd et nmbd composant Samba sont contrôlés par défaut par le fichier de configuration smb.conf. Celui-ci se trouve dans /etc/samba/. C’est ce fichier qu’il faut adapter pour obtenir la configuration et les partages désirés. Une version documentée est déjà disponible après l’installation du package Debian. La lecture de se fichier donne une vision relativement complète des possibilités offertes par Smaba. Garder une copie de ce fichier s’avérera sûrement utile.

Le fichier de configuration se compose de 3 sections de paramètres. La première section [global] permet de définir les paramètres généraux du serveur Samba. La seconde section est destinée aux partages de répertoires. Quand à la dernière section celle-ci est dédiée aux imprimantes partagées. Dans le cas présent seul la première et deuxième section seront utilisées.

La section globale du fichier de configuration se présente ainsi


[global]
security=user
guest ok=no
encrypt passwords=true
smb passwd file=/etc/samba/smbpasswd

security=user Samba attend un nom d’utilisateur et un mot de passe pour autoriser l’utilisation des partages disponibles. Seul les partages sur lesquels l’utilisateur a des droits sont accessibles. Samba utilise par défaut user comme valeur à ce paramètre.

guest ok=no interdit la connexion au serveur comme invité. Seul les utilisateurs valides peuvent accéder au serveur.

Chaque dossier partagé doit faire l’objet d’une section dans le fichier de configuration. L’exemple ci-dessous permet le partage du dossier maison.


[maison]
path=/srv/maison
force create mode=0770
force directory mode=0770
write list=@maison

path=/srv/maison spécifie le chemin depuis la racine jusqu’au répertoire à partager.

force create mode et force directory mode permettent de spécifier un masque lors de la création de fichiers et de répertoires.

write list=@maison permet de donner les droits en lecture et écriture sur le partage maison au groupe maison. Les noms d’utilisateurs et les groupes Unix peuvent être spécifiés. Les groupes sont toujours précédés de @ comme dans l’exemple.

Il faut bien sûre créer ce répertoire et donner les droits au groupe maison.


mkdir /srv/maison
chown root.maison /srv/maison
chmod 770 /srv/maison

Une fois les modifications apportées au fichier de configuration la commande testparm permet de vérifier qu’aucune erreur syntaxique n’est présente dans le fichier.

Le processus Samba supporte la syntaxe suivante :

/etc/init.d/smb start
/etc/init.d/smb stop
/etc/init.d/smb restart

Comme la configuration de Samba a été modifiée, il faut donc redémarrer les services pour que le serveur prenne en compte les modifications.

Gestion des utilisateurs

L’objectif est que chaque utilisateur du NAS dispose de son propre compte utilisateur. Tous les utilisateurs disposeront donc d’un compte linux et seront membre d’un groupe commun nommé maison.

La première tâche consiste à ajouter le groupe maison aux groupes unix.

addgroup maison

Les utilisateurs du NAS n’ont aucun besoin de se connecter via SSH ou directement au serveur Linux. Il est donc préférable, et mieux en terme de sécurité, de désactiver l’autorisation de se connecter (–disabled-login). La création d’un répertoire home n’est pas non plus nécessaire (–no-create-home).

adduser --disabled-login --no-create-home --ingroup maison utilisateur1

Samba doit pouvoir retrouver le mot de passe de l’utilisateur dans son propre fichier.

smbpasswd -a utilisateur1

Il est maintenant possible de se connecter au dossier partagé maison disponible sur le serveur avec l’utilisateur utilisateur1.

Connexion du client

Connexion à un partage depuis un client Windows :
net use h: \\192.168.1.75\maison

Connexion à un partage depuis un client OS x :
Aller >> Se connecter au serveur >> smb://192.168.1.75 (adresse IP de votre Raspi) puis “se connecter” entré ensuite le nom de l’utilisateur et son mot de passe.

7 thoughts on “Un NAS avec un Raspberry Pi

  1. super tuto!
    mais ne faut-il pas spécifier un domaine de travail style WORKGROUP?

    • Le paramètre workgroup est surtout utile en cas d’utilisation avec Windows pour “retrouver” facilement le serveur. La valeur doit alors correspondre au workgroup des machines clientes.

      • merci pour la précision.
        cependant, comme je n’avais pas compris de quelle manière apparaissaient les partages dans windows, et que je les voulais en arborescence dans workgroup, j’ai rajouté les lignes
        Browseable = yes
        writeable = yes
        du coup, ça apparait, mais impossible d’écrire dessus.
        franchement, je suis en train de me taper le man chmod et c’est dur pour un noob. Aurais-tu une idée pour que j’aille plus vite à résoudre cette m…?

        • Dans la configuration présentée tu dois créer un utilisateur et un groupe sur le Raspi. Ensuite depuis Windows tu peux utiliser la commande net use pour maper le partage et utiliser ainsi l’utilisateur pour t’identifier. Après tu verras un disque supplémentaire dans Explorer.
          Fais bien attention aux permissions et au propriétaire et groupe sur le Raspi. Le problème vient en général des permissions entre Linux / Samba et Windows.

          • là je dis “wouah”. je n’avais même pas réalisé que le lecteur réseau était directement implanté dans le poste de travail. c’est magique!
            pour les permissions, tu as effectivement raison.
            voici ce que me sort ls -l /storage
            total 8
            d-w——- 3 root storage
            drwxr-xr-x 2 root root
            pour les deux répertoires qu’il contient. ce que je ne comprend pas c’est qu’a priori, donner des droits pour un répertoire ne s’applique pas aux répertoire qu’il contient. ou alors j’ai rien compris.
            as-tu un post sur les permissions?

  2. bonjour,
    est-il possible de faire l’inverse en montant un partage windows dans un environnement raspian?
    Monter des .img sur le lecteur sd de mon laptop est particulièrement ardu d’où l’idée de partager le lecteur pour les monter à partir du raspberry.
    mais aucun tutos sur les nas raspberry n’en parle.
    je sents que j’y suis presque, mais smbtree ne me montre pas le laptop et quand j’essaye de monter quelque chose j’ai
    Connection to 192.168.0.1 failed (Error NT_STATUS_UNSUCCESSFUL)
    ?