Media amovibles
De Diablotins.org.
| Lecteur optique, disquettes, clé USB
|
| ||
| Un FreeBSD fraîchement installé ne donne aucun droit aux utilisateurs sur les périphériques.
Il est alors nécessaire d'acquérir le crédit de root pour les monter, ce qui, dans le cas des supports de stockage amovibles, disquettes, Cédéroms, clefs USB etc., n'est pas souhaitable. |
Sommaire |
Préparation
Quelque soit la recette utilisée pour monter vos périphériques, vous devez lire ce qui suit.
qui a le droit ?
Définissons les groupes d'utilisateurs dédiés aux pilotages des certains périphériques amovibles, floppy (lecteur de disquette) et cdrom (Lecteur CD).
Dans les exemples suivants, David et Lecid seront membres de floppy et de cdrom, Nolwenn, de cdrom.
Les permissions des périphériques
Au démarrage, le système consulte le fichier etc/devfs.conf pour déterminer les crédits à affecter aux périphériques. devfs.conf(5) propose la structure suivante:
Action périphérique utilisateur:groupe
Le mot clef «own» détermine le propriétaire du périphérique, «perm» les droits affectés à ce dernier. Ainsi:
link acd0 cdrom #Cas particulier, le périphérique cdrom est un lien vers acd0. own acd0 root:cdrom perm acd0 0660 own cdrom root:cdrom perm cdrom 0660 own fd0 root:floppy perm fd0 0660
Les permissions du lecteur de disquette (fd0) et du lecteur de cédérom (acd0) sont ainsi définis: le propriétaire root et le groupe («:cdrom» ou «:floppy») ont le droit de lire et d'écrire sur le périphérique («666»/«-rw-rw----»);ce qui inclue «root» alors qu'il n'est pas membre des groupes idoines.
Le montage par l'utilisateur
Par défaut, seul root a le droit de monter un périphérique.Pour permettre aux autres de le faire, ajoutez une entrée dans sysctl.conf
# echo vfs.usermount=1 >> /etc/sysctl.conf
Et, pour éviter de redémarrer la machine:
# sysctl vfs.usermount=1
Les utilisateur peuvent ainsi monter des systèmes de fichiers, mais seulement dans leur propre espace. Ce qui veut dire que l'utilisateur doit être le propriétaire du point de montage.
Aussi, créez pour chaque utilisateur, un répertoire associé au système à monter:
david:$ mkdir ~/floppy ~/cdrom lecid:$ mkdir ~/floppy ~/cdrom nolwenn:$ mkdir ~/cdrom
Plus simplement et pour éviter de le faire à chaque nouvel utilisateur, créez le squelette idoine.
mkdir -p /usr/share/skel/cdrom /usr/share/skel/floppy
operator
La création de groupes dédié des exemples précédents est plus un cas d'école qu'un cas pratique.
Ne créez pas un groupe dédié au montage de périphériques, comme patrick doit souvent le rappeler,
il existe déjà: c'est le groupe «operator».
Montage
Utilisez mount(8) et umount(8) pour cela:
mount /dev/qui /où
Vérifiez que votre périphérique se trouve dans /dev.
Systèmes de fichiers
La commande mount charge automatiquement le module noyau nécessaire au système de fichier. Mais cette action de mount n'est possible qu'en super utilisateur. Pour monter en utilisateur, il faut charger les modules nécessaires au boot ou inclure les systèmes de fichiers dans un noyau personnalisé. Par exemple pour les CD, il faut inclure cd9660.ko voir même udf.ko. Les systèmes inclus au noyau GENERIC diffèrent suivant les versions de FreeBSD.
Les clefs USB
Ces périphériques sont détectés par le système lors de leur introduction, consultez la console d’événement pour les reconnaître.
- Généralement, les périphériques de stockage USB sont reconnus comme des disques SCSI: da[n]. -
N'étant pas branchés au démarrage du système, il ne sont pas présent dans /dev/ et ne peuvent donc pas être déclarés dans /etc/devfs.conf comme précédemment.
Lorsqu'ils sont détectés, le sytème doit en créer les entrées.
Définissez les droits requis par leurs utilisateurs en ajoutant une règle à /etc/devfs.rules:
[usb_key=1] add path 'da2*' mode 0660 user root group cdrom
Si, vous n'avez aucun véritable disque SCSI dans la station, utilisez da*. Cette règle est incluse dans l'ensemble usb_key. Activez la au démarrage dans /etc/rc.conf par:
devfs_system_ruleset="usb_key"
Et, comme précédemment, précisons dans /etc/fstab:
/dev/da2s1 /usr/home/david/photo msdos ro,noauto 0 0 /dev/da2s1 /usr/home/nolwenn/photo msdos ro,noauto 0 0 /dev/da2s1 /usr/home/Joueur/photo msdos ro,noauto 0 0
Ici, mon appareil photo numérique (reconnu comme /dev/da2s1), par exemple, sera monté automatiquement dans ~/photo, avec les même droits que cdrom.
Les graveurs
Pour utiliser sysutils/cdrtools vous avez certainement associé un pilote périphérique SCSI («cd[n]») à votre lecteur de cédérom, même s'il ne l'est pas.
Aussi, considerez, outre ce lecteur, d'autres périphériques supplémentaires à considérer: «pass[n]».
Ajoutez les entrées nécessaires au fichier «/etc/devfs.conf».
Pré-définir le montage
Le système consulte le fichier /etc/fstab pour contrôler le montage de système de fichier.
Définissez une entrée pour chaque utilisateur et chaque périphérique:
/dev/cd0 /usr/home/david/cdrom cd9660 ro,noauto 0 0 /dev/cd0 /usr/home/nolwenn/cdrom cd9660 ro,noauto 0 0 /dev/cd0 /usr/home/lecid/cdrom cd9660 ro,noauto 0 0 /dev/fd0 /usr/home/david/floppy msdos rw,noauto 0 0 /dev/fd0 /usr/home/lecid/floppy msdos rw,noauto 0 0
Les Cédéroms seront automatiquement montés en cd9660, les disquettes en FAT.
commande simple
Il suffit d'utiliser désormais la commande «mount»:
$ mount ~/cdrom $ mount ~/floppy
Interfaces graphiques
Ces interfaces présentant des icônes pour monter ces périphériques, cliquez ! Sinon, créez des icônes qui représentent les commande précédentes.
Montage automatique
Il existe nombreuses possibilités via le démon amd(8).
Mais un rapide coup d’œil à la documentation va vous montrer qu'il est assez compliqué de le configurer. Pour résumer, ce démon se comporte comme un serveur NFS qui va monter un périphériques dès que l'on tente d'accéder à son répertoire.
Heureusement, il existe le port sysutils/automounter qui va faire le boulot de configuration à votre place. Mieux, via devd(8), il va créer tout seul les points de montage dans /Media.
Les mains dans les poches, après son installation, ajoutez l'entrée dans rc.conf
automounter_enable=yes
Et lancez le
service automounter start
Entrez une clef usb et:
ls /media iso9660 msdosfs
Deux systèmes de fichiers apparaissent, un CDRom et un FAT.
ls /media/msdosfs/ DEBIAN_LIVE
Le Label de la clef est apparu, vous pouvez la parcourir...
Les media virtuels
Attention ce qui suit ne fonctionne que depuis la branche 5 de FreeBSD;auparavant la procédure utilise les fonction vn et vnconfig.
Ceux sont des images de média amovibles, Cédérom (ISO) ou disquettes (flp).
Pour éviter d'avoir à les graver, FreeBSD va créer un périphérique pour les contenir.
Vous avez récupéré l'ISO de Duke Nukem 3D et vous voudriez y jouer grâce aux émulateurs, DosBox par exemple ?
Créez un périphérique (md) qui pointe sur le fichier, ou plutôt, son contenu:
mdconfig -a -t vnode -f ~david/game/DUKE3D.ISO -u 1
Le paramètre «-u» vous permet de forcer le numéro du périphérique, ici, «md1»; pour utiliser la numérotation automatique, omettez le.
Montez le périphérique, de manière classique:
mount -t cd9660 /dev/md1 ~/cdrom
Démontez le tout:
mount -u ~/cdrom
Libérez le périphérique virtuel:
mdconfig -d -u 1
Notez que certains fichiers dit «ISO» sont en fait des images faites par le logiciel Nero, dans un format un peu particulier, dit «.nrg», qui comporte une entête supplémentaire. Supprimez la:
dd if=FichierNero.nrg of=Fichier9660.iso bs=2048 skip=150
Hal et le Plug'&'play
Hal devrais permettre d'automatiser le montage, du début à la fin. C'est à dire que, hormis la gestion des droits citée au début, vous n'avez rien à faire.
Hal surveille dbus et il vous faut des outils pour surveiller hal...
C'est l'inconvénient du bidule, sans grosse artillerie KDE, Gnome ou XFCe, point de salut.
N'oubliez pas que Hal, de lui-même ne fait rien, rien d'autre que de signaler l'arrivée d'une nouveau périphérique et surtout de sa classe. En effet les logiciels qui écoutent Hal, attendent une classe de périphérique particuliere pour proposer à l'utilisateur une utilisation définie à l'avance.
Dans notre cas, il s'agit de «org.freedesktop.Hal.Device.Storage.Removable».
Démarrez le bidule, au démarrage dans rc.conf:
dbus_enable=yes hald_enable=yes
ou à la volée
service dbus onestart service hald onestart
Définissez une règle pour les périphériques amovibles, dans /usr/local/etc/PolicyKit/PolicyKit.conf
david:~>cat /usr/local/etc/PolicyKit/PolicyKit.conf
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">
<!-- See the manual page PolicyKit.conf(5) for file format -->
<config version="0.1">
<match user="root">
<return result="yes"/>
</match>
<define_admin_auth group="operator"/>
<match action="org.freedesktop.hal.storage.mount-removable">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.storage.mount-fixed">
<return result="yes"/>
</match>
<match action="org.freedesktop.hal.storage.eject">
<return result="yes"/>
</match>
</config>
| |
Les version modernes de sysutils/policykit ne nécessitent plus de polkitd_enabledans rc.conf.C'est désormais une bibliothèque et non un service. |
Maintenant, connectez vous sous votre environnement de bureau, branchez une clef et attendez...

