Ce cours est visible gratuitement en ligne.

J'ai tout compris !
A la découverte d'UNIX (FreeBSD)

A la découverte d'UNIX (FreeBSD)

Mis à jour le mardi 8 janvier 2013
  • 4 semaines
  • Moyen

Il ne manque plus que la clé USB.

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 :

[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 ) :

[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 chownchange 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.

[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 :

[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 :

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

A la fin de ce fichier, ajoutez :

[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).

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].

% 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)

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.

[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 ...

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 :

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/.

Découvrez aussi ce cours en...

Exemple de certificat de réussite
Exemple de certificat de réussite