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…

openbsd/cle_usb.txt · Last modified: 2010/01/12 13:29 (external edit)