Comme je souhaite utiliser mon Raspberry comme « serveur de stockage » entre autres, j’ai acheté un disque dur USB alimenté, car les 8Go de la carte SD étaient un peu juste. Dans ce billet, j’explique comment j’ai configuré ledit disque dur, pour un partage simple.
Le montage
Dans le monde Unix, le verbe « monter » désigne l’opération barbare qui consiste à faire en sorte de pouvoir accéder à votre disque dur (ou autre périphérique). En effet, quand on le branche simplement, on ne peut pas y accéder tant qu’il n’a pas été monté. Donc on va faire en sorte que ce disque dur là tout neuf soit automatiquement monté dans un répertoire de notre choix, avec les permissions qui vont bien, afin d’être sûr de toujours le retrouver.
Pour savoir à quel « device » il correspond, utilisez la commande :
sudo fdisk -l
Dans le résultat obtenu, il faut chercher le bloc qui correspond au disque dur, pour moi c’est :
Disk /dev/sdb: 2000.4 GB, 2000398933504 bytes 255 heads, 63 sectors/track, 243201 cylinders, total 3907029167 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x524a5d81 Device Boot Start End Blocks Id System /dev/sdb1 2048 3907024895 1953511424 7 HPFS/NTFS/exFAT
Puisque je sais qu’il fait 2To (enfin 2000398933504 octets). Il correspond donc à /dev/sdb1
(une seule partition) et il est formaté en NTFS, tout va bien. Maintenant, il va nous falloir une seconde info le concernant : son UUID. C’est un identifiant unique, pour le trouver, utilisez la commande :
ls -l /dev/disk/by-uuid/
Et cherchez l’UUID recherché est la suite de numéro et de lettres qui précède le -> ../../sdb1
dans mon cas. Dernière étape : choisir et créer le répertoire dans lequel on veut monter ce disque. J’ai choisit de créer un dossier /storage/
dans lequel je monterai mes disques durs, et donc pour celui là en l’occurrence, on va créer le répertoire /storage/mon_disque
:
sudo mkdir /storage sudo mkdir /storage/mon_disque
On peut maintenant configurer le fichier /etc/fstab
pour y ajouter la ligne qui correspondra au montage de notre disque dur :
sudo vim /etc/fstab
Et ajoutez la ligne suivante à la fin :
UUID=votre_UUID /storage/mon_disque ntfs-3g defaults 0 2
Voilà, vous pouvez maintenant monter manuellement votre disque en faisant la commande [AJOUT : il faut avoir installer le paquet ntfs-3g
avant !] :
sudo mount /dev/sdb1
Mais tout l’intérêt est que maintenant, à chaque fois que vous brancherez ce disque sur ce raspberry, il sera toujours monté de la même façon, dans le dossier /storage/mon_disque/
!
Un point qui ne me plaisait pas spécialement avec cette configuration très simple, est que le disque dur est en accès 777, c’est à dire que tout le monde peut écrire dessus ! Je ne sais pas si cela est fondamentalement grave mais j’ai préféré changer les permissions. Le seul point délicat, c’est que certains logiciels ont besoin de pouvoir accéder à ce disque : samba, client bittorrent, serveur web, etc… On va voir dans la suite comment j’ai choisi de gérer cela.
Les permissions
Ce qui m’a semblé le plus simple, c’est de créer un groupe storage qui aura tous les droits sur mes disques durs externes, et j’y ajouterai à la main les utilisateurs. Voilà la démarche que j’ai suivie :
- Création du groupe :
sudo groupadd storage
- Récupération de l’id de ce groupe. La commande :
cat /etc/group |grep storage
devrait vous renvoyer une seule ligne ressemblant à
:storage:x:1005:
L’id du groupe est donc 1005, et on va en avoir besoin plus tard. - Ajout de l’utilisateur pi (ou toto si vous vous appelez toto) :
sudo usermod -a -G storage pi
- Modification du fichier
/etc/fstab
pour que le dossier de montage appartienne au groupe storage (on remplace les options defaults) :UUID=votre_UUID /storage/mon_disque ntfs-3g suid,dev,auto,async,gid=1005,umask=007 0 2
Le 1005 correspond à l’id du groupe storage et le umask est un paramètre assez compliqué (voir mes sources à la fin du billet), mais la valeur 007 implique que les utilisateurs n’appartenant pas au groupe storage pourront lire et parcourir le disque, mais pas écrire dessus.
- Eventuellement, ajout des autres utilisateurs correspondant aux logiciels qui doivent pouvoir écrire sur le disque. Par exemple, si vous souhaitez partager certains dossiers via votre serveur web (voir mon billet Installation d’un serveur web), l’utilisateur correspondant au serveur Apache2 est www-data. Il faut donc faire :
sudo usermod -a -G storage www-data
Partage sur le serveur Web
J’ai expliqué dans le billet Installation d’un serveur web comment installer un simple serveur Apache. Vous pouvez par exemple partager un dossier de votre disque dur directement via le web en créant un lien symbolique. Par exemple, si vous souhaitez partager tout le contenu du dossier /storage/mon_disque/dossier_public/
, vous pouvez utiliser la commande :
sudo ln -s /storage/mon_disque/dossier_public/ /var/www/dossier_public
Si l’adresse pour accéder à voter serveur web est mon-rpi.dnsdynamic.com (vous avez utiliser mon tutoriel Utilisation d’un DNS dynamique ?), vous (ou n’importe qui attention !) pouvez consulter le contenu de ce dossier à l’adresse : mon-rpi.dnsdynamic.com/dossier_public/
Il est possible de protéger ce que vous partager sur votre serveur web, par mot de passe par exemple, mais j’en parlerai plus tard. J’ajoute tout de même un lien la dessus dans les sources de ce billet.
Partage avec Samba
Je pense que j’écrirai un billet là-dessus, mais juste au cas où vous auriez déjà configuré un serveur Samba (partage de certains répertoires, y compris avec Windows), sachez que si vous avez suivi ce tutoriel, il vous faudra modifier légèrement votre configuration. Dans le fichier /etc/samba/smb.conf
, pour chacun de vos partage, ajoutez la ligne force group = storage, ce qui donnera par exemple :
[mon_disque] path = /storage/mon_disque browseable = yes read only = no guest ok = yes force group = storage
Accès par client Bittorrent
On verra dans un prochain billet comment installer un client Bittorrent (Transmission) sur votre Raspberry Pi, et le configure pour que les fichiers téléchargés arrivent sur votre disque externe. Il ne faudra donc pas oublier d’ajouter l’utilisateur debian-transmission au groupe storage :
sudo usermod -a -G storage debian-transmission
Sources
- Manuel de fstab sur le site Ubuntu-fr : http://doc.ubuntu-fr.org/mount_fstab
- Aide sur l’utilisation de umask (en anglais) : http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
- Protection par mot de passe de dossiers pour Apache : http://www.cyberciti.biz/faq/howto-setup-apache-password-protect-directory-with-htaccess-file/