web-dev-qa-db-fra.com

montage automatique de tout lecteur externe sous / media avec accès en lecture / écriture à tout le monde

Voici mon problème:

Mon ordinateur dispose de 4 ports USB et exécute Ubuntu 12.10. Chaque jour, je reçois des clés USB différentes, je les branche à mon ordinateur, lecture/écriture données, puis je les envoie.

Ce que je veux, c'est monter automatiquement n'importe quelle clé USB que je branche sur mon ordinateur. Le premier USB détecté ira à /media/HDD1, le second à /media/HDD2 et ainsi de suite. Ou ce serait bien si USB connecté au port1 ira à /media/HDD1, USB connecté au port2 ira à /media/HDD2, etc.

Le chemin /media n’est pas important, mais j’aimerais avoir les répertoires HDD1-4 à un endroit unique pour pouvoir y accéder facilement.

Les clés USB sont normalement ext2 mais parfois, je reçois également des clés USB FAT32, NTFS.

Je souhaite également que la clé USB soit montée sans se connecter à Ubuntu, car j’accède souvent à /media/HDD.. à partir d’un autre ordinateur Windows.

Comment puis je faire ça? Quel changement dans udev règles, fstab devrais-je effectuer? Les suggestions sont grandement appréciées.

9
Kiwi

Eh bien, ici, nous pouvons utiliser le même truc que fstab utilise pour les supports optiques (CD et DVD):

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

La première colonne indique le système de fichiers. Je suis sûr que vos clés USB auront des valeurs fixes. Nous allons donc supposer que tout ce qui se trouve après sda est une clé USB. Et comme vous ne pouvez avoir que 4 clés USB en même temps, la liste va de sdb, sdc, sdd et sde.

$ ls /dev/sd*
/dev/sda   /dev/sdb   /dev/sdb3  /dev/sdb6  /dev/sdc  /dev/sdf
/dev/sda1  /dev/sdb1  /dev/sdb4  /dev/sdb7  /dev/sdd
/dev/sda2  /dev/sdb2  /dev/sdb5  /dev/sdb8  /dev/sde

(Dans mon cas, j'utilise un lecteur de mémoire, mes pilotes USB démarrent donc de sdg mais continuons.)

Maintenant, nous supposons que chaque clé USB a une seule une partition, les lignes dont nous avons besoin, pour notre fstab, sont les suivantes:

/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1

Ensuite, vous avez dit que vos points de montage devaient être corrigés. Après avoir créé vos répertoires, ajoutons-les:

/dev/sdb1 /media/HDD1
/dev/sdc1 /media/HDD2
/dev/sdd1 /media/HDD3
/dev/sde1 /media/HDD4

Comme vous pouvez avoir presque tous les types de systèmes de fichiers, utilisons le auto afin que fstab devine le type de fichier à utiliser:

/dev/sdb1 /media/HDD1 auto
/dev/sdc1 /media/HDD2 auto
/dev/sdd1 /media/HDD3 auto
/dev/sde1 /media/HDD4 auto

Ok, passons maintenant aux options, qui seront les mêmes pour les CD avec les permissions en lecture/écriture:

/dev/sdb1 /media/HDD1 auto rw,users,noauto,allow_other,umask=0
/dev/sdc1 /media/HDD2 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD3 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD4 auto rw,users,noauto,allow_other,umask=0

rw indique que nous voulons des autorisations de lecture et d'écriture, users permet à tout utilisateur de monter un périphérique, noauto empêche le pilote d'être monté automatiquement lorsque mount -a est appelé, comme ça au démarrage, empêchant les erreurs de démarrage et les avertissements, allow_other autorise les autres utilisateurs, mais l'utilisateur qui a monté le pilote, à disposer des mêmes autorisations, et umask=0 empêche l'application des valeurs par défaut umask.

Maintenant, les 2 seuls champs restants correspondent à peu près aux commandes dump et fsck, qui pourraient être dans 0, nous laissant ainsi le résultat final:

/dev/sdb1 /media/HDD1 auto rw,user,noauto,allow_other 0 0
/dev/sdc1 /media/HDD2 auto rw,user,noauto,allow_other 0 0
/dev/sdd1 /media/HDD3 auto rw,user,noauto,allow_other 0 0
/dev/sde1 /media/HDD4 auto rw,user,noauto,allow_other 0 0

Ainsi, chaque fois que vous branchez un périphérique USB, celui-ci est automatiquement monté sur le point de montage sans intervention de l'utilisateur. Vous devriez modifier en fonction de vos besoins.

7
Braiam

Voici la solution que j'ai trouvée:

Tout d'abord, j'installe autofs sur mon PC Linux:

Sudo apt-get install autofs

Il créera un fichier auto.master sous /etc/auto.master

Ajoutez la ligne suivante à la fin de ce fichier:

/media/mount /etc/auto.mount --timeout=10 --ghost

/media/mount est un répertoire dans lequel je veux monter tous les lecteurs externes. /etc/auto.mount est le fichier à mettre en règles de montage. --timeout=10 signifie qu'il démontera automatiquement le lecteur après 10 secondes d'inactivité. --ghost signifie qu'il reste toujours une image du contenu lorsqu'il est démonté. Modifiez cette ligne en fonction de vos besoins.

Editez le fichier /etc/auto.mount et ajoutez les lignes suivantes:

disk1  -fstype=auto,sync  :/dev/sdc1
disk2  -fstype=auto,sync  :/dev/sdd1
disk3  -fstype=auto,sync  :/dev/sde1
disk4  -fstype=auto,sync  :/dev/sdf1
disk5  -fstype=auto,sync  :/dev/sdg1
disk6  -fstype=auto,sync  :/dev/sdh1
disk7  -fstype=auto,sync  :/dev/sdi1
disk8  -fstype=auto,sync  :/dev/sdj1
DVD    -fstype=iso9660,ro :/dev/sr0

Pour les lecteurs normaux tels que USB ou eSATA, définissez -fstype=auto,sync. J'ai 8 ports USB + eSATA, je déclare donc 8 points de montage ici. Mon ordinateur a déjà sda et sdb en tant que disques locaux. Je mets donc sdc1 -> sdj1 pour les périphériques externes. Ce sont en fait des nœuds de périphérique dans /dev lorsque vous connectez vos lecteurs. Une exception à la règle de montage est le montage sur DVD, comme vous le voyez ci-dessus.

Lorsque j'insère des lecteurs, ils apparaissent en tant que disk1, disk2, ... dans le répertoire /media/mount et se démontent automatiquement au bout de 10 secondes. Je n'ai pas besoin de toucher mon PC et je peux y accéder depuis un autre endroit (comme une machine virtuelle)

3
Kiwi