Aller au menu - Aller au contenu

Icône Accès aux clés USB

Avatar
Mise à jour : 04/08/2011
Difficulté : Difficile Difficile Creative Commons BY-NC-SA
7 018 visites depuis 7 jours, dont 41 sur ce chapitre classé 32/786
Il ne manque plus que la clé USB.

Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

A - Droits de montage

Une clé USB est ce qu'on appelle un périphérique de stockage de masse. Elle permet de stocker une grande masse de données : plusieurs gigaoctets. Vous avez déjà activé le module du noyau qui gérant le système USB. Mais pour que votre clé soit entièrement prise en charge par FreeBSD, il faut ajouter le module umass. Vous savez comment faire.

Par ailleurs, plusieurs mécanismes de sécurité interdisent à un utilisateur ordinaire d'accéder au contenu d'un périphérique externe. Seul root :zorro: en a le droit. C'est une protection pour éviter que n'importe qui :pirate: vienne insérer une clé USB contenant des programmes mal-intentionnés.

Bon, chez vous, ce risque est normalement minime. :D Vous allez donc pouvoir désactiver ces protections, pour accéder à votre clé USB en tant qu'utilisateur ordinaire.
Image utilisateur

Sur cette clé USB, il y a des fichiers, organisés en répertoires (oui, j'ai bien dit répertoires et pas dossiers ;) ), le tout au format FAT : un format assez ancien maintenant, qui était celui du système d'exploitation MS-DOS. Il faut intégrer l'arborescence des répertoires de votre clé à celle des dossiers de votre disque dur et donc rattacher la racine de la clé à l'un de vos dossiers. On appelle ça le montage. Et pour l'instant, seul root est autorisé à monter une clé USB.

Il faut créer sur votre disque un dossier spécial consacré à ces montages, avec un sous-dossier pour chaque utilisateur. La commande mkdir (make directory) est là pour ça :

Code : Console
[Nom de l'ordinateur]# mkdir /mnt/[votre identifiant]


Il faut aussi préciser à FreeBSD que le dossier portant votre nom vous appartient (ce n'est pas si évident pour lui :p ) :

Code : Console
[Nom de l'ordinateur]# chown [votre identifiant]:[votre identifiant] /mnt/[votre identifiant]


Pourquoi est-ce que je dois taper mon identifiant trois fois ? o_O


La commande chown change le propriétaire (owner) d'un dossier. Chaque dossier appartient à la fois à un utilisateur bien précis et à un groupe d'utilisateurs. L'utilisateur propriétaire et le groupe propriétaire n'ont pas forcément les mêmes droits sur ce dossier. Souvenez-vous du chapitre L'envers du décor.

Après chown, vous saisissez donc une première fois votre identifiant pour indiquer que vous êtes l'utilisateur propriétaire. Puis une deuxième fois pour signaler que le groupe propriétaire se réduit à votre personne. Et la troisième fois, c'est pour préciser le nom du dossier, qui se trouve être le votre.

Il faut répéter cette étape pour chaque utilisateur que vous voulez autoriser à monter des clés USB. On peut aussi définir un point de montage commun à tous les utilisateurs (ça ira plus vite ;) ) mais ça peut être bien de savoir qui monte quoi où.

B - Changer les règles

Pour donner des privilèges supplémentaires à certains utilisateurs, sans pour autant leur ouvrir les portes du groupe wheel, on peut les inscrire dans un autre groupe spécial : operator. Inscrivez-y tous ceux que vous voulez autoriser à monter des clés USB.

Code : Console
[Nom de l'ordinateur]# pw usermod [identifiant] -g operator


Pour ceux qui sont déjà membre du groupe wheel, utilisez cette formulation, pour indiquer qu'ils sont maintenant dans deux groupes à la fois :

Code : Console
[Nom de l'ordinateur]# pw usermod [identifiant] -G operator,wheel


Ce groupe operator va se voir offrir un chemin (path) vers les périphériques à accès direct (da), c'est à dire les clés USB et certains modèles de disques durs. Il faut pour cela éditer un fichier de configuration que vous connaissez déja :

Code : Console
[Nom de l'ordinateur]# emacs /etc/devfs.rules


A la fin de ce fichier, ajoutez :

Code : Console
[localrules=1]
add path 'da*' mode 0660 group operator


Si vous avez déjà configuré l'imprimante, la ligne [localrules=1] est déjà présente en haut du fichier et ce n'est pas la peine de la répéter.

Par contre, si vous ne l'avez pas fait, il faut informer votre système de configuration des ressources (rc) de l'existence de cette règle locale. Ajoutez donc au fichier /etc/rc.conf la ligne : devfs_system_ruleset="localrules".

Autre cran de sécurité : FreeBSD dispose d'un mécanisme de contle du système : sysctl. L'une des règles fondamentale de sysctl est vfs.usermount=0 : un utilisateur ordinaire n'a pas le droit de monter (to mount) de nouveaux systèmes de fichiers (file systems).


Cette règle doit être désactivée. Mais ayez bien conscience que c'est une sécurité que vous allez ainsi faire sauter.


A l'aide d'emacs, d'echo, d'ee ou de printf, ajoutez dans le fichier /etc/sysctl.conf, la ligne : vfs.usermount=1.

C - Alias

Votre clé USB, vous le savez, est représentée comme tous les périphériques par un fichier dans le dossier /dev/. Quel fichier exactement ? Son nom doit être da[numéro], puisqu'il s'agit d'un périphérique à accès direct. Pour savoir quel est ce numéro, allez dans le dossier /dev/, faites un ls et repérez les da[numéro]. Ensuite, branchez votre clé USB et recommencez : un nouveau da[numéro] est apparu. Chez moi, c'est da4. Il y a aussi un fichier da4s1 représentant l'unique partition de cette clé USB.

C'est justement cette partition qu'il faut monter dans le dossier /mnt/[votre identifiant].

Code : Console
% mount -t msdosfs -o -m=644,-M=755 /dev/da4s1 /mnt/[votre identifiant]

L'option -t permet de spécifier le format du système de fichiers à monter. Avec cette commande, vous monterez le système de fichiers de type MS-DOS situé sur la 1ère partition du périphérique (device) à accès direct n°4. (Pour vous, ce n'est peut-être pas le n°4)

Il n'y a PAS d'espace entre la virgule et le -M.

C'est aussi comme ça qu'on monte sous FreeBSD une partition d'un autre OS. Par exemple, si Windows est sur la partition 2 du disque dur ad0 : mount -t ntfs /dev/ad0s2 /mnt/[votre identifiant].

Elle est bien compliquée cette commande. Je vais devoir taper tout ça à chaque fois que je veux monter une clé USB ?

En principe, oui. Mais pour vous simplifier la vie, je vous propose de créer un alias de commande : une commande plus courte, qui sera équivalente à celle-ci.

C'est csh, votre shell, qui gère les alias. Il y a dans votre dossier personnel un fichier caché du nom de .cshrc qui configure ce shell et où vous pouvez définir de tels alias. Mais au lieu de faire ça pour chaque utilisateur, définissez-les plutôt dans le fichier de configuration globale du csh : /etc/csh.cshrc.

Code : Console
[Nom de l'ordinateur]# emacs /etc/csh.cshrc

Vous voyez qu'il n'y a pas grand chose ici. Les lignes commençant par un # sont des commentaires : elles sont destinées à être lues par des humains et l'ordinateur les ignore. Celle que vous allez écrire, par contre, devra bien être lue par l'ordinateur.

Je vous propose de créer l'alias usb (il ne faut pas choisir un nom déjà utilisé), qui sera équivalent à la longue commande mount -t ...

Code : Console
alias usb 'mount -t msdosfs -o -m=644,-M=755 /dev/da4s1 /mnt/$USER'


Vous pouvez aussi, par exemple, créer une commande win pour monter une partition Windows, et une commande imprim, pour ne plus avoir à écrire /usr/local/bin/lpr.

Et, tant que vous êtes dans csh.cshrc, ajoutez aussi la ligne :

Code : Console
if ($?prompt) /usr/games/fortune freebsd-tips


Comme ça, à chaque fois que vous ouvrirez un terminal, vous pourrez lire une astuce sur FreeBSD et sa ligne de code, choisie au hasard par le programme fortune. Vous allez vite devenir de vrais experts. Le if, en début de ligne, permet d'éviter que ces astuces s'affichent aussi à chaque fois que vous demandez l'exécution d'un script csh.

Sauvegardez et quittez.

Mais ! Je ne m'appelle pas $USER. :o Qu'est-ce que c'est que ça ?


Vous avez déjà oublié ? USER est une variable d'environnement. Le symbole $ désigne la valeur d'une variable d'environnement. On peut la consulter avec la commande echo et la modifier avec setenv.

Que fait une variable d'environnement dans notre alias ?


On veut que l'alias soit valable pour tous les utilisateurs et que chacun puisse monter la clé USB dans le dossier qui porte son nom. Or, son nom, c'est justement la valeur de USER. Cette méthode globale évite d'avoir à configurer un par un tous les .cshrc dans le dossier personnel de chaque utilisateur.

Bon ! Je crois que votre machine a bien mérité un petit reboot pour digérer tous ces changements. Vous aussi, d'ailleurs, une pause vous ferait du bien : vous avez l'air épuisés. :'(

Ensuite, pour tester la nouvelle commande usb, insérez votre clé, tapez usb, et allez voir dans le dossier /mnt/.


Q.C.M.

Quel fichier peut-on éditer pour charger des modules complémentaires dans le noyau ?
Lequel de ces fichiers peut représenter une clé USB ?
Lequel de ces fichiers n'a-t-on pas forcément besoin d'éditer pour permettre à un utilisateur ordinaire de monter une clé USB ?
Quel est le format le plus courant pour les systèmes de fichiers des clés USB ?

Statistiques de réponses au QCM

Chapitre précédent Sommaire Chapitre suivant

Partager

6 commentaires pour "Accès aux clés USB"
Note moyenne : 3.71 / 4 (299 votes)
Pseudo Commentaire
Hors ligne popernik # Posté le 13/09/2010 à 12:06:18
N'abandonne jamais
Avatar

Avis : Très bon

Ville : Bruxelles
Pays : Belgique
Études : EPHEC

Bonjour,

Ce chapitre n'est pas trés claire je trouve :euh: surtout pour un débutant o_O .
En fait je comprend pas ce qu'il faut faire pour le driver son.
j'ai bien editer le fichier :
Code : Console
# emacs /boot/loader.conf


Aprés je fais :
Code : Console
cat COPYRIGHT > /dev/dsp

mais rien ne se passe j'entend rien :'(

Et puis ici j'ai rien compris :euh:
Code : Console
% cat /dev/sndstat


C'est pas claire moi avec ma config j'ai ça :
Code : Console
pcm0: <HDA ATI R6xx HDMI PCM #0 HDMI> (play) default
   pcm1: <HDA Realtek ALC885 PCM #0 Analog> (play/rec)
   pcm2: <HDA Realtek ALC885 PCM #1 Analog> (play/rec) 
   pcm3: <HDA Realtek ALC885 PCM #2 Digital> (play/rec) 
   pcm4: <USB audio> (rec)


Un screen ne serait pas de trop pour un peu plus de clareté ;)
Citation : Brice Errandonea
pcm0 :. (pcm0 est votre carte son). Quelque part sur cette ligne, vous verrez un snd_[quelque chose]. Chez moi, par exemple, c'est snd_atiixp. Voila votre pilote. Vous pouvez donc retourner voir /boot/loader.conf et remplacer snd_driver_load par snd_atiixp_load. (En remplaçant atiixp par votre pilote à vous)">

La c'est quoi chez moi ?
En sachant que mon son n'est pas connecter a ma carte graphique mais bien à ma carte son Realtek o_O
D'ou je me demmande ce que je dois taper ?

Merci d'avance
Mais si non très bon tuto ;) .

Exerces ta volontés à renoncer à tout ce que tu redoutes de perdre un jour.
 
Hors ligne popernik # Posté le 13/09/2010 à 19:08:23
N'abandonne jamais
Avatar

Avis : Très bon

Ville : Bruxelles
Pays : Belgique
Études : EPHEC

Probléme résolu allez voir sur le forum si interessée ;) : lien

Exerces ta volontés à renoncer à tout ce que tu redoutes de perdre un jour.
 
Hors ligne TurtleCrazy # Posté le 26/10/2010 à 23:56:36

Avis : Mitigé

Pas besoin de rebooter pour quoique ce soit ici, les modules se chargent avec kldload et sysctl peut être appelé à la demande...
Hors ligne popernik # Posté le 28/11/2010 à 07:42:27
N'abandonne jamais
Avatar

Avis : Très bon

Ville : Bruxelles
Pays : Belgique
Études : EPHEC

Citation : TurtleCrazy
Pas besoin de rebooter pour quoique ce soit ici, les modules se chargent avec kldload et sysctl peut être appelé à la demande... ">


Je savais pas ...

Exerces ta volontés à renoncer à tout ce que tu redoutes de perdre un jour.
 
Hors ligne Finwë # Posté le 04/05/2011 à 23:07:49
Tout est relatif ...
Avatar

Ville : Sylvains les moulins
Pays : France métropolitaine

Bonsoir,
Après avoir pas mal trituré ton tuto, je me permet de poster un petit commentaire, au niveau du son :)
Il pourrait être intéressant de parler dans la partie "personaliser le noyau" des "options"
device sound
device snd_pilote
Pour quelqu'un qui utilise FreeBSD en tant que desktop, cela peut être intéressant.
De plus, pour quelqu'un dont la sysctl hw.snd.default_unit n'est pas la bonne par défaut, il pourrait être intéressant de parler de "/etc/sysctl.conf" histoire de pas avoir à la modifier à chaque démarrage :p

//"Si la mémoire est à la tête, ce que le passé, peut-on y accéder à six ?"
 

Voir tous les commentaires