Partages de fichiers sous GNU/Linux

/etc/fstab

Pour les initiés, le fichier /etc/fstab contient la liste des partitions à monter au démarrage du système. Il est néanmoins possible d'y ajouter d'autres points de montage.

L'extrait suivant provient du fichier /etc/fstab d'une distribution GNU/Linux Ubuntu Feisty Fawn. Il a été récrit pour être plus lisible, tout en étant parfaitement fonctionnel. Comme on le voit sur la dernière ligne, j'ai choisi d'ajouter un point de montage SMB.

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda4       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda2       /boot           ext3    defaults        0       2
/dev/sda3       /home           ext3    defaults        0       2
/dev/sda1       none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
# Partage SMB
//serveur/partage /mnt smbfs defaults,user,noauto,username=thomas,uid=1000,ro 0 2

Simplement, je souhaite monter ici le partage nommé partage sur le système de nom DNS server vers le répertoire /mnt de mon système. Il faut bien faire attention à fournir le système de fichier correct, ici smbfs. J'ai choisi les options de montage par défaut, tout en faisant attention d'inclure quelques paramètres supplémentaires :

  • user : indique que les utilisateurs du système peuvent monter le partage distant ;
  • noauto : le partage distant n'est monté qu'à la demande ;
  • username=thomas : le système de fichier distant est monté en fournissant le nom d'utilisateur qui peut y accéder ;
  • uid=1000 : je souhaite avoir les droits particuliers de l'utilisateur d'uid 1000 sur le système distant ;
  • ro : le partage distant est monté en lecture seule.

Et c'est terminé pour ce fichier.

Support SMB/CIFS

Par la suite, avant de pouvoir monter le partage distant, il faut prendre quelques précautions :

  • Le noyau doit reconnaître les systèmes de fichiers de type smbfs. Sous Ubuntu 7.04, il s'agit du paquet smbfs, tout simplement, qui ajoute le module et le charge dans le noyau ;
  • Il faut disposer d'outils client pour monter les systèmes de fichiers de type smbfs. C'est plus ici une question de sécurité. En effet, seul le super-utilisateur du système a le droit d'invoquer les commandes mount et umount pour monter des systèmes de fichiers (locaux ou distants, peu importe). Les outils clients permettent d'ajouter d'autres binaires, plus restreints, pour permettre que les utilisateurs pourront manipuler. Le paquet adéquat sur Ubuntu 7.04 est smbclient.

Une fois les paquets ajoutés, il semble logique que le montage puisse s'effectuer. Il n'en est rien. Comme je l'ai dis, seul le super-utilisateur du système a les droits, de façon générale, d'invoquer les commandes qui servent aux montages de systèmes de fichiers. L'astuce réside donc dans le positionnement d'un suidbit sur les commandes smbmnt et smbumount (du paquet smbclient).

$ sudo chmod u+s /usr/bin/smbmnt
$ sudo chmod u+s /usr/bin/smbumount

En console, le montage s'effectue par la commande :

$ smbmnt /mnt

De même pour le démontage :

$ smbumount /mnt

Le montage peut aussi s'effectuer sous Gnome grâce à Nautilus (le navigateur de fichiers par défaut dans Gnome). Dans Nautilus, sur le panneau latéral gauche, il est possible de voir des raccourcis vers des répertoires particuliers (classiquement, le home, le bureau et la racine / du système de fichiers). Le partage est désormais visible (dans mon cas, mnt). En double-cliquant dessus, Nautilus demande un mot de passe, le mot de passe de l'utilisateur fournit dans le fichier /etc/fstab. Si ce mot de passe est correct, le montage s'effectue.

Tout n'est beau dans le meilleur des mondes. Sous Nautilus, il existe à l'heure actuelle un bug au niveau de la commande qui démonte les systèmes de fichiers. Le montage des partages SMB s'effectue bien grâce à la commande smbmnt, mais le démontage passe par la commande umount. Et l'utilisateur n'a pas les droits pour l'invoquer.

Discussion

Entrer votre commentaire
Si vous ne pouvez déchiffrer le code, téléchargez ce fichier .wav pour l'entendre.