Mount et fstab pour les nuls


#1

[*] Disques et partitions
Sous linux, les disques sont nommés de la façon suivante :

  • pour les disques IDE : hda pour le premier disque, hdb pour le deuxième, hdc pour le troisième,…
  • pour les disques SCSI,S-ATA ou USB: sda pour le premier, sdb pour le deuxième, sdc pour le troisième,…
    (sur d’autres distributions, ou avec une autre configuration du noyau, les disques IDE peuvent aussi s’appeler sda, sdb)

Les partitions sont simplement numérotées :

  • hda1 : première partition du premier disque (IDE)
  • hda2 : deuxième partition du premier disque
  • hdb1 : première partition du deuxième disque
  • hdb2 : deuxième parition du deuxième disque
  • etc.
    Les numéros 1, 2, 3 et 4 sont réservés aux partitions primaires, les numéros 5 et suivants sont utilisés pour les partitions logiques.
    Si votre disque hda contient deux partitions primaires et deux partitions logiques, vous aurez alors hda1, hda2, hda5 et hda6. hda4 (FIXME : hda3 ?) représente la partition étendue (qui contient les partitions logiques), mais dans la pratique on ne s’en sert pas.

Les partitions sont représentés par des fichiers dans /dev. Vous pouvez donc voir tous vos disques et partitions en tapant dans une console :

$ ls /dev | grep [sh]d

D’autres commandes peuvent vous donner des infos sur vos partitions :

# fdisk -l
$ df -ah

Ça peut être utile pour s’assurer que telle ou telle partition est bien celle que vous pensez. :wink:

[*] La commande mount
La commande mount(8) permet de monter une partition dans un répertoire donné.
A l’installation, vous avez défini une partition racine (/). Les autres partitions peuvent alors être montés dans n’importe quel dossier vide de la partition racine. On appelle ce dossier le point de montage (logique non ?). En plus des partitions séparées du système (généralement /home, parfois /usr, /var, /tmp et/ou /boot), on utilise généralement le dossier /media pour mettre les points de montages des disques amovibles (/media/cdrom, /media/usb,…) et /mnt pour les points de montages temporaires, ou de partitions d’un autre système (/mnt/documents_win, /mnt/tmp,…), mais vous pouvez monter vos partitions où vous voulez.

Elle peut s’utiliser très basiquement :

mount <partition> <point de montage>

Par exemple : mount /dev/sda1 /media/usb0 montera la partition sda1 dans le dossier /media/usb0.

Il faudra parfois lui donner quelques paramètres :
-t : renseigne le type de la partition
Ici rien de sorcier : il suffit de remplacer par le type de la partition (ext3, ext4, xfs, reiserfs,…). Sauf pour les partitions windows :

  • pour le FAT, on doit mettre « vfat ». A part ça rien de sorcier.
  • pour le NTFS, c’est un peu plus subtil. « ntfs » correspond à l’ancien driver ntfs, qui permet de le lire sur une partition NTFS, mais pas d’écrire dessus. Il peut être utile si vous voulez monter la partition en lecture seule (il y a aussi l’option ro sinon, voir plus bas).
    Pour pouvoir écire sur du NTFS, il vous faut installer le paquet ntfs-3g et renseigner comme type « ntfs-3g ».

-o : ajoute des options au montage.
On peut vouloir choisir des options au montage, il faudra alors indiquer les options, séparées par une virgule :

  • « rw »ou « ro »: monte la partition en lecture/écriture (read-write) ou en lecture seule (read-only).
  • « exec » ou « noexec » : permet ou ne permet pas de lancer des fichiers exécutables (programmes ou script) situés sur la partition.
  • « loop » : permet de monter une image disque dans un dossier (loopback)
  • il y en a d’autres, voir la partie sur fstab (plus bas)

Exemples :

# mount -t vfat -o ro,noexec /dev/sda1 /media/usb0

monte sda1, de type FAT, sur /media/usb0, en lecture seule, et ne permet pas à un éventuel script situé sur la partition de s’exécuter.

# mount -t iso9660 -o loop debian-503-amd64-netinst.iso /mnt/tmp

monte le fichier iso dans /mnt/tmp

Nota Bene :

  • mount ne créé pas de dossier. Les points de montages doivent donc exister. En toute logique, il doivent aussi être vide.
  • les droits appliqués au montage (ro, noexec) sont prioritaires sur les droits des fichiers.

[*] Partitions Windows et droits
Si chmod 644 fichier c’est du chinois pour vous, allez lire siteduzero.com/tutoriel-3-12 … #ss_part_4
Les partitions NTFS et FAT ne gèrent pas les droits Unix. Il vous sera donc impossible de modifier les droits des fichiers ou dossiers avec chown(1) ou chmod(1).
Mais on peut définir des droits au montage, qui seront appliqués sur toute la partition, à l’aide de trois options :

  • « uid= » et « gid= » : détermine à quel utilisateur et à quel groupe appartient la partition. Vous pouvez voir l’uid et le gid de votre utilisateur avec la commande id ou en le lisant dans fichier /etc/passwd (awk -F : ‘// {print “uid=”$3" gid="$4}’ /etc/passwd).
  • « umask= » : détermine les droits sur la partition. L’umask, c’est le nombre à retirer de 666 pour avoir les droits en octal. Par exemple un « umask=022 » donnera des droits 644 (666-22), soit rw-r–r--, un umask=466 donnera des droits 200, soit le droit de lecture à l’utilisateur seulement (r--------). Pour les droits d’exécutions, utilisez l’option exec (m’enfin, sur une partition win :unamused: )…
    FIXME : Pourquoi dans le man, ces options apparaissent pour ntfs et pas pour vfat (alors qu’elles fonctionnent pour vfat) ?

[*] Le fichier /etc/fstab
Le fichier fstab(5) permet d’enregistrer les points de montage et arguments à donner à mount, pour toutes vos partitions.
Vous devriez avoir un en-tête (commenté par un #) de cette forme :

device	  mount point   type   options   dump   pass

qui nomme 5 colonnes dans le fichier. Les colonnes sont séparées par au moins un espace.
Chaque ligne correspond à un montage (une commande mount, si vous voulez).

device : périphérique
On ne peut plus simple : c’est le nom de la partition à monter (ex : « /dev/hda1 »)
Vous pouvez aussi renseigner l’UUID de la partition : viewtopic.php?f=8&t=18271 (utile pour renseigner une clé usb qui doit être montée différemment des autres par exemple)

mount point : point de montage
Le dossier où doit être monté la partition.

type : type de la partition
correspond à l’option -t de mount.
Il existe le type « auto » qui comme son nom l’indique, demande à mount de déterminer automatiquement le type de la partition (si vous avez plusieurs type de clé USB, par exemple). Il est tout de même préférable d’indiquer le type quand on peut.

options : les options de montage.
correspond à l’option -o de mount.
Quelques options utiles avec fstab :

  • « auto » ou « noauto » : monte ou ne monte pas le périphérique automatiquement au démarrage de la machine, ou lorsque l’on lance mount -a
  • « users » : permet aux autres utilisateurs que root de monter/démonter la partition.
  • « user » : même chose, mais seul l’utilisateur qui a monté la partition pourrra la démonter.
    /!\ pour certaines options (exec ou dev, par exemple), il vous faut monter la partition en root pour qu’elles soient prise en compte.
    /!\ ntfs-3g doit être suid-root (chmod +s $(which ntfs-3g)) pour être utilisée avec «user(s) ». FIXME : C’est tout ?
  • « defaults » : correspond à « rw,suid,dev,exec,auto,nouser,async »
    Si vous ajoutez d’autres options, elles auront priorités. i.e « default, ro » équivaut à «ro,suid,dev,exec,auto,nouser,async »

dumb : sauvegarde
si différent de zéro, indique à dump qu’il peut sauvegarder la partition. Laissez le à zéro.

pass : vérification
indique à fsck s’il doit faire la vérification de disque au démarrage. Laissez « 1 » pour la partition racine, « 2 » pour les partitions linux (sauf swap et systèmes de fichiers exotiques) « 0 » pour les autres.

Exemple :

/dev/hda1   /mnt/win   ntfs-3g   defaults,noauto,uid=1000,gid=1000,user   0   0

permettra de faire mount -t ntfs-3g -o defaults,noauto,uid=1000,gid=1000 /dev/hda1 /mnt/win en root, en tapant seulement mount /dev/hda1 ou bien mount /mnt/win avec n’importe quel utilisateur.

[*] Le fichier /etc/mtab
Toutes les partitions montées sont enregistrées dans /etc/mtab. Il est utilisé par mount pour savoir quelles partitions sont déjà montées et lesquelles ne le sont pas.
Il permet de démonter une partition avec umount en tapant seulement umount /dev/nom_de_la_partition ou bien umount /point/de/montage

[*] Monteurs automatiques
Si vous êtes dans un environnement de bureau (Gnome, KDE, XFCE,…) vous avez probablement un programme qui se charge de monter automatiquement vos partitions. Généralement, vous pouvez tout de même indiquer vos partitions dans fstab pour utiliser certaines options de montage, si le montage automatique ne se fait pas comme vous voulez…
Si vous utilisez un simple gestionnaire de fenêtres, vous pouvez utilisez :

  • disk-manager si vous voulez un GUI « user-friendly »
  • ivman, si vous voulez quelque chose de simple et sans fioritures. Le projet ne semble plus actif, mais vous pouvez vous orientez vers son fork qui l’est plus : havelt.

#2

Bonjour,

Je pense que tu voulais pas mettre un s à user sur la deuxième ligne.


#3

Super !.. les nuls te remercient :laughing:

juste un “s” en trop :

  • « users » : permet aux autres utilisateurs que root de monter/démonter la partition.
  • « users » : même chose, mais seul l’utilisateur qui a monté la partition pourrra la démonter.[/quote]

#4

Ooops ! corrigé…


#5

Salut,

A votre avis, combien de temps avant la prochaine question sur “mount” ?

Et pourtant bravo, concis, clair et en français :blush:


#6

Oui, chapeau bas.


#7

Petit post sur les monteurs automatiques, je m’inspire de ce sujet :
http://forum.debian-fr.org/viewtopic.php?f=3&t=23409

Nous avons donc en gros trois applications :

:arrow_right: halevt

Paquet : halevt
Responsable : Mike O'Connor <stew@debian.org>
Taille décompressée : 295k
Dépend: libboolstuff-0.1-0, libc6 (>= 2.3.6-6~), libdbus-1-3 (>= 1.0.2),
         libdbus-glib-1-2 (>= 0.78), libglib2.0-0 (>= 2.12.0), libhal1 (>=
         0.5.8.1), libxml2 (>= 2.7.4), adduser, hal
Description : Generic handler for HAL events
 halevt is a daemon that acts as a policy agent on top of HAL. It listens to
 HAL events and reacts with user-configurable actions.  It is a
 reimplementation of ivman project. 
 
 Among other things, halevt is useful as an automount daemon that will mount
 removable devices but with a much smaller set of dependencies than tools such
 as gnome-volume-manager.
Site : http://www.environnement.ens.fr/perso/dumas/halevt.html

C’est, comme le dit limax, un fork d’ivman qui serait plus entretenu.

:arrow_right: En parlant d’ivman :

Paquet : ivman
Responsable : Mike O'Connor <stew@vireo.org>
Taille décompressée : 291k
Dépend: adduser, hal, libc6 (>= 2.7-1), libdbus-1-3 (>= 1.1.1),
         libdbus-glib-1-2 (>= 0.74), libglib2.0-0 (>= 2.12.0), libhal1 (>=
         0.5.8.1), libxml2 (>= 2.6.27), pmount
Description : daemon to auto-mount and manage media devices
 ivman is a daemon that acts as a policy agent on top of HAL. It listens to HAL
 events and reacts with user-configurable actions. Currently it supports
 automount of new media and hot-plugged devices, autorun, autoplay for CDs and
 DVDs, and automatic camera management.
Site : http://ivman.sourceforge.net/

Ces deux applis sont plutôt simples et discrètes, sans interface graphique. Si vous voulez quelque chose de plus user-friendly,
:arrow_right: optez pour disk-manager

Paquet : disk-manager
Responsable : David Paleino <d.paleino@gmail.com>
Taille décompressée : 877k
Dépend: python (>= 2.4), python-support (>= 0.90.0), python2.5, python-gtk2,
         python-glade2
Recommande: ntfs-3g, module-init-tools, dmsetup
Description : simple graphical filesystem configurator
 Disk-Manager is a simple filesystem configurator that allows you to: 
 * Automatically detect new partitions at startup. 
 * Fully manage configuration of filesystem. 
 * Enable/disable write support for NTFS (needs ntfs-3g installed).
Site : http://flomertens.free.fr/disk-manager/

Note : il y aussi les gestionnaires de volume de gnome (gnome-volume-manager) et de kde (?) que je connais moins


#8

Salut et merci !
C’est toujours délicat de rédiger un Tuto/T&A/HowTo… Et c’est du boulot !
Dans mes favoris !


#9

9a c’est de la balle merçi pour ce tuto.


#10

llapingachos : j’ai rajouté.


#11

Salut,

Et pas seulement pour l’utilisateur 1000 ? Tu es sûr ?


#12

Ben logiquement, n’importe quel utilisateur peut le monter (user) mais les dossiers et fichiers appartiendront à l’utilisateur 1000 (uid=1000,gid=1000).
Bon dans la pratique, si tu as plusieurs utilisateurs, faudra plutôt jouer avec umask (et gid, si tu veux donner plus de droits à certains utilisateurs qu’à d’autres).


#13

Re,

user Allow an ordinary user to mount the filesystem. The name of the mounting user is written to mtab so that he can unmount the filesystem again.
default.

users Allow every user to mount and unmount the filesystem.

This options implies the options noexec, nosuid, and nodev (unless overridden by subsequent options, as in the option line users,exec,dev,suid).


#14

Ben si l’utilisateur 1001 monte la partition, seule lui pourra la démonter (user et pas users), mais les fichiers et dossiers appartiendront toujours à l’utilisateur 1000 (uid=1000,gid=1000)


#15

Re,

Il vaut donc mieux qu’ils appartiennent au groupe “user” et ne pas spécifier uid=1000 et gid=1000. Ainsi c’est celui qui les montent qui à les droits et ne pas réduire ta linuxette à un systèeme mono-utilisateur ?


#16

Merci pour le rajout.

Ne faut-il pas préciser le système de fichier ? J’ai eu des erreurs sans ça.

mount -o loop -t iso9660 image.iso /un/dossier

:question:


#17

Comme je le disais 2 posts plus haut, mon exemple (defaults,noauto,uid=1000,gid=1000,user) peut l’affaire pour un système mono-utilisateur : seul l’utilisateur 1000 monte la partition. Pour un système multi-utilisateur, il vaut mieux utiliser l’option users avec par exemple :

  • umask=000 pour permettre à tout le monde de lire et écrire dessus
  • umask=002,gid=XXX pour permettre seulement aux utilisateurs du groupe « XXX » d’écrire sur le disque, et aux autres de lire
  • umask=040,gid=XXX pour permettre seulement à root d’écrire dessus, aux utilisateurs du groupe « XXX » de le lire, et rien aux autres.

Par contre, je ne comprends pas pourquoi tu parles d’un groupe « user ». C’est une option, pas un groupe.
Disgression : adduser est modifié sous debian & consorts, et créé un groupe ayant même nom que l’utilisateur créé. Les nouveaux fichiers créé par cet utilisateur appartiendront à ce groupe. Sous d’autres distibutions, un fichier créé par un utilisateur appartiendra au groupe… users !

Ça dépend, si tu montes une image d’une partition ext3 (faite avec dd), tu n’as pas besoin. Mais pour une image iso il faut indiquer le type, en effet. Je corrige…
D’après le man, si aucun type n’est indiqué (ou si le type indiqué est auto), mount cherchera à deviner le FS à partir de l’UUID. S’il ne le reconnait pas, il essayera les types listés dans /etc/filesystems, puis /proc/filesystems si /etc/filesystems n’existe pas ou se termine par une ligne contenant un simple « * ».


#18

Je n’ai pas tout lu mais rien que l’idée du tuto sur les partitions et leur nommage, est en soi excellente, bravo !

Je ne sais pas si c’est fait mais, si ce n’est pas le cas, demande à Fran.b de l’ajouter à la liste.


#19

Re,

Difficile de croire que tu n’as pas compris. J’ai fait bien attention de mettre user entre guillemets, ce qui signifiait, pour moi, “par exemple”, c’est à dire le groupe d’utilisateurs ayant droit de montage ! :slightly_smiling: :slightly_smiling:


#20

Bonjour, je trouve ce post très intéressant, cependant, une p^hrase me met le doute, sur quelque chose dont ej cherche justement une réponse :

dossier vide; cela signifie qu’il doit être vide ?
Si je monte une deuxième partition sur /home ou /var qui contiennent en générale quelques truc (monter au démarrage je parle) ; est-ce que cela entraine un conflit ? Entre la partition 1 sur / et ma deuxième, sur /var