Mon problème a résoudre ici est assez simple. Permettre à un utilisateur sans droits du système de monter une clé USB définit à un emplacement spécifique.
Sous Linux, ça se serait traduit par une création de répertoire et une ligne ajoutée à /etc/fstab
avec un UUID=
et l’option users
.
Mais je dois le faire sous FreeBSD et il n’y a ni l’option users
ni udev
.
L’exercice est fait ici avec FreeBSD Release 10.0. Le dossier à utiliser est /sas
. La clé est formatée avec une seule partition en VFAT.
Label de partition
Insérer la clé USB.
Il faut commencer par trouver le périphérique de la partition qui nous intéresse. La commande dmesg
nous renseigne sur le dernier périphérique utilisé :
# dmesg | tail ugen2.2: <vendor 0x13fe> at usbus2 umass0: <vendor 0x13fe MEMUP, class 0/0, rev 2.00/1.10, addr 2> on usbus2 umass0:Â SCSI over Bulk-Only; quirks = 0x4000 umass0:5:0:-1: Attached to scbus5 da0 at umass-sim0 bus 0 scbus5 target 0 lun 0 da0: < MEMUP PMAP> Removable Direct Access SCSI-0 device da0: Serial Number 0748374E0011 da0: 40.000MB/s transfers da0: 1908MB (3907584 512 byte sectors: 255H 63S/T 243C) da0: quirks=0x2<NO_6_BYTE>
Ici, c’est le périphérique /dev/da0
. Si on regarde /dev/da0*
, on a :
/dev/da0
/dev/da0s1
On va pouvoir ajouter un label à cette partition da0s1
de cette clé USB :
# glabel label sas /dev/ad0s1
La partition a maintenant un label permanent qui apparaît comme /dev/label/sas
. Si on remplace la clé USB par une autre clé partitionnée de la même façon, le label ne sera pas remis en place, il est vraiment spécifique au couple clé/partition.
Point de montage
On commence par créer le dossier /sas
avec les bons droits :
# mkdir /sas
# chmod 770 /sas
# chown toto /sas
# chgrp toto /sas
On pourrait monter la partition à la main, mais c’est mieux de l’automatiser. On ajoute à /etc/fstab :
/dev/label/sas /sas msdosfs rw,noauto 0 0
Ici, je permet l’écriture (rw
) et interdit le montage automatique (noauto
). Le montage se fera par une action volontaire de l’utilisateur.
On peut vérifier que la partition monte bien :
# mount /sas
# ls /sas
Photos
# umount /sas
On peut aussi vérifier avec une autre clé USB, ça ne marche pas.
Droit aux utilisateurs
Jusqu’ici, seul root peut utiliser cette partition.On va faire en sorte qu’un utilisateur le puisse aussi.
Ajouter au fichier /etc/rc.conf
la ligne :
devfs_system_ruleset="localrules"
Ajouter au fichier /etc/sysctl.conf
la ligne :
vfs.usermount=1
Créer le fichier (ou ajouter) /etc/devfs.rules
avec comme contenu :
[localrules=10]
add path 'label/sas' mode 0660 group toto
Après redémarrage, en insérant la clé USB, on peut voir les droits de /dev/label/sas
:
crw-rw---- 1 root toto 0x69 29 avr 23:45 /dev/label/sas
Et, reconnecté en tant que toto, on doit pouvoir monter la partition simplement en lançant :
$ mount /sas
$ ls /sas
Photos
$ umount /sas
Si on donne pas à toto les droits utilisateurs sur le répertoire de montage, il le peut pas monter la partition sur ce répertoire. Mais il peut la monter ailleurs dans son dossier personnel.
Et voila :-)
Liens
– http://www.freebsd.org/doc/handbook/geom-glabel.html
– http://scratching.psybermonkey.net/2010/07/freebsd-how-to-allow-normal-user-to.html
– http://www.freebsd.org/cgi/man.cgi?query=devfs.rules&sektion=5
– http://www.freebsd.org/doc/handbook/usb-disks.html