Dans sa version 3.7, OpenBSD est installé avec un noyau generique compilé pour reconnaitre la plupart des mémoires flash usb de base!
Il suffit de brancher la clé et d'exécuter un petit dmesg pour voir le résultat:
umass0 at uhub0 port 1 configuration 1 interface 0 umass0: USB Mass storage, rev 2.00/2.00, addr 2 umass0: using SCSI over Bulk-Only scsibus1 at umass0: 2 targets sd0 at scsibus1 targ 1 lun 0: <GENERIC, USB Mass Storage, 2.00> SCSI2 0/direct removable sd0: 124MB, 124 cyl, 64 head, 32 sec, 512 bytes/sec, 255744 sec total
On regarde la structure du disque:
disklabel sd0 (à remplacer par le sd fourni par la commande dmesg...) size offset fstype [fsize bsize cpg] c: 255744 0 unused 0 0 # Cyl 0 - 124* i: 255456 32 MSDOS # Cyl 0*- 124*
Bon, on remarque qu'elle n'a qu'une partition i, formaté en SaleFS…
pour la monter, c'est simple:
#mkdir /mnt/cleusb #mount -t msdos /dev/sd0i /mnt/cleusb
Pour qu'un utilisateur puisse monter un device, il faut que le répertoire de destination lui appartienne. On va pas créer un répertoire par périphérique par utilisateur! Alors on modifie la table des systèmes de fichier, en ajoutant la ligne:
/dev/sd0i /mnt/cleusb msdos noauto,rw 0 0
Et on utilise ce petit script tout convi, qu'on place dans /usr/local/bin (avec les droits 755 pour le root): Le script en question:
#!/bin/sh # Montage et démontage de systèmes de fichier # Par bedis # v 0.1
if [ ! $1 ]; then echo Utilisation: $scriptname nom exit 1 fi
scriptname=`basename $0` case $scriptname in 'usermount') cmd='mount' expl='Montage' ;; 'userumount') cmd='umount' expl='Démontage' ;; *) echo Mauvais nom d''appel du script... exit 1 ;; esac for montage in 'cleusb'; do if [ $montage = $1 ]; then echo $expl de $1 `sudo $cmd /mnt/cleusb` fi done
Vous le créez dans /usr/local/bin/usermount Vous le passez en mode exécutable:
#chmod 755 /usr/local/bin/usermount
Vous créez son équivalent userumount par un petit lien symbolique:
#ln -s /usr/local/bin/usermount /usr/local/bin/userumount
Maintenant, reste plus qu'à modifier le fichier sudoers:
#visudo
Ajouter les lignes suivantes:
Cmnd_Alias USERMOUNT = /sbin/mount, /sbin/umount %users ALL=(ALL)NOPASSWD: USERMOUNT
Et mes utilisateurs peuvent maintenant monter et démonter une cléusb.
Bien sûr, à adapter selon les cas. Fonctionne aussi pour CDROM, disquette nfs etc…