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.