Montage automatique des disques USB (comment cela fonctionne)

12

Contexte: J'essaie de monter un disque USB en lecture seule mais mon installation Ubuntu est en train de le monter rw lorsque je branche le disque.

Je peux démonter le disque manuellement et le remonter manuellement en lecture seule avec les commandes umount et mount mais ce n'est pas amusant. Quelqu'un pourrait-il me donner une explication rapide sur la façon dont les montages USB sont effectués automatiquement sur un système Linux typique (udev? Le contexte historique est bien aussi) et peut-être comment je peux modifier ce processus pour me permettre de lire le disque ro?

Merci.

Edit: j'utilise gnome si cela aide du tout.
Edit2: Dans ma hâte, j'ai oublié de fournir un peu plus d'informations. Voici à quoi ressemble le disque à la sortie de 'mount'.

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edit3: Cela peut également être pertinent à sa manière. Dans la sortie de montage, j'ai également les éléments suivants:

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

Je pensais que cela pouvait être lié au support Fuseblk ci-dessus, mais ce que j'ai découvert était le suivant.

Gvfs est le système de fichiers virtuel Gnome. Il s'agit d'un système de fichiers virtuel construit au-dessus des vfs du noyau déjà existants. gvfs utilise la bibliothèque GIO (qui est une API VFS) pour accéder aux fichiers, périphériques, emplacements réseau distants, etc. Dans ce cas ci-dessus ('gvfs-fuse-daemon') gvfs utilise FUSE pour monter des fichiers / emplacements / périphériques. C'est essentiellement ce qui se produit lorsque vous montez une connexion réseau à distance dans Nautilus. Il utilisera FUSE pour monter l'emplacement (à l'intérieur?) Du répertoire .gvfs, puis il communiquera avec la couche du système de fichiers virtuel gnome pour communiquer avec le nouveau montage.

Fondamentalement, cette structure permet à l'utilisateur de monter dynamiquement de nouveaux emplacements et d'interagir avec eux via nautilus.

Juste pour référence: FUSE est un système de fichiers en espace utilisateur, c'est-à-dire qu'il permet à l'utilisateur d'exécuter le montage même lorsque cet utilisateur n'est pas root)

Alors, où est ce qu'il me laisse? Eh bien, le disque LaCie est monté avec un fusible de type. Ceci est juste un appareil bloc monté avec fusible. Donc, un démon a détecté automatiquement le lecteur lorsqu'il a été branché, puis est allé de l'avant et a exécuté un fusible pour monter mon périphérique de blocage. Alors, quel démon est-ce, et comment est-il configuré (je suppose que c'est quelque chose de gnome interne) est la question la plus importante. Une question secondaire est de savoir comment le système a détecté automatiquement un disque USB nouvellement inséré, mais je pense que c'est un peu un niveau à part et beaucoup plus bas ici (lire: udev?).

Liens:

fthinker
la source
existe-t-il une entrée fstab pour le système de fichiers / media / LaCie et / ou le périphérique / dev / sdb1? Est / dev / sdb1 étiqueté de toute façon (e2label / dev / sdb1)?
Tok
Non, il n'y a pas d'entrée fstab. Je crois qu'il est étiqueté lors de son montage sur / media / LaCie. J'aurais besoin d'installer ntfslabel pour le savoir, mais je suis sur le point de quitter le travail. Il apparaît également sur mon bureau sous le nom de LaCie.
fthinker

Réponses:

3

J'ai essayé de le faire sur mon ordinateur et ça marche :)

Je reçois d'abord un nom pour mon appareil:

ls -l /proc/disk/by-id/

Dans mon cas, c'est / proc / disk / by-id / usb-09a6_8001

J'ai ajouté cette ligne dans / etc / fstab:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

Et cela fonctionne, lorsque je branche ma clé USB, elle est montée sur ro et appartient à mon utilisateur.

profy
la source
Merci profy :) Mais l'objectif principal de ma question est d'atténuer l'extrême frustration que je ressens chaque fois que je suis obligé de comprendre comment les montages automatiques et les périphériques USB fonctionnent. Je suis ici pour déchiffrer la magie qui se cache derrière ces systèmes complexes. De plus, l'utilisation des appareils fstab et usb est un peu délicate car ils ne sont pas toujours garantis d'être branchés au démarrage!
fthinker
1
Je ne sais pas comment cela fonctionne, mais je suis sûr que les nouveaux appareils sont détectés par les règles udev, jetez un œil à /etc/udev/rules.d/ et à /lib/udev/rules.d/.
profy
2

De nos jours, les solutions par défaut sont autant que je sache udiskun démon fournissant une API dbus ainsi qu'une interface de ligne de commande . Il existe également plusieurs wrappers udisks et monteurs automatiques disponibles.

En règle générale, vous ne vous configurez pas udisklui-même car il fait simplement ce qui lui est dit, vous devez donc vous pencher sur Gnome. Peut-être que l'utilitaire de disque Gnome vous permet de modifier / changer les drapeaux de montage lui-même.

Ulrich Dangel
la source
2

Comme l'a dit Ulrich Dangel, les udisks devraient être la référence de nos jours. Je n'ai pas encore vu comment il est notifié (udev-> dbus-> udisks?), Mais manuellement, il peut être utilisé pour monter un appareil avec les options dont vous avez besoin.

Udisks parle à polkit pour voir ce qu'un utilisateur est autorisé à faire avec les volumes. Je suppose ici, mais si nous pouvions trouver un endroit pour définir les propriétés d'un disque / périphérique nommé, cela devrait fonctionner.

En utilisant udisksctl, votre utilisateur devrait être capable de monter l'appareil avec les options dont vous avez besoin, quelque chose comme ceci:

udisksctl mount -b / dev / sdxy -o ro / mountpoint

Pourtant, je ne sais pas où placer les options.

MISE À JOUR: Suite aux suggestions d'Ulrich, je suis allé à l'utilitaire de disque Gnome et j'ai obtenu ce dont vous avez besoin mais je ne sais pas si c'est la solution la plus élégante ou non. J'utilise Kororaa 17 (basé sur Fedora 17) avec Cinnamon + Gnome3, je suis allé à l'utilitaire "Disks" et j'ai modifié les options de montage pour mon lecteur USB, ajouté "ro" et enregistré.

Il ajoute une entrée à fstab (c'est là que je ne le vois pas comme une solution élégante, je pense qu'il devrait rester comme une configuration utilisateur non étendue au système), je branche le lecteur et il est monté automatiquement sur le point de montage sélectionné avec des options J'ai enregistré sur l'utilitaire de disques Gnome.

triplède
la source
Que voulez-vous dire par vous pour voir comment il est notifié? Quelle étape manque?
Ulrich Dangel
Et ce n'est pas , udev→dbus→udiskmaisudev/uevent→udisk→dbus
Ulrich Dangel
Je voulais dire que je n'étais pas vraiment sûr et je voulais le vérifier mais maintenant je vois que je ne me trompais pas à 100%.
triplède le
[strike] Veuillez montrer la ligne qui a été ajoutée dans fstab. Je voudrais confirmer ce que je pense. [/ Strike] Donc, la ligne fstab correspond à celle de la réponse de @ profy? c'est à dire avec l' rooption.
inverser
-1

Sur le sujet de la façon dont le noyau détecte le matériel, voici un très bel article sur ce qui se passe .

En résumé:

  • le noyau analyse constamment les bus de votre PC et mappe les périphériques au système de fichiers virtuel, généralement sous /sys/.
  • le noyau envoie un message qu'un nouveau matériel est disponible pour udev, qui:
    • traiter les règles udev sur l'appareil
    • créer un lien symbolique entre l'appareil et /dev/
    • charger les pilotes de périphériques
    • notifier l'espace utilisateur de l'appareil via dbus

À ce stade, l'appareil est prêt à être utilisé par l'espace utilisateur. Gvfs et FUSE sont tous deux des systèmes de fichiers en espace utilisateur.

inverser
la source
Non, en udevrègle générale , les applications ne sont pas notifiées via des dbusapplications tierces. Si vous utilisez, qdbus --systemvous ne verrez aucun nom udev. En règle générale, les applications s'abonnent ueventsou expédient leurs propres règles
Ulrich Dangel
Merci d'avoir souligné @ulrich. Mon résumé donne un aperçu très basique excluant de nombreuses étapes intermédiaires. Voir l'article lié pour plus de détails.
inverser
2
l'article est également faux car il n'y a normalement pas de scrutin impliqué pour surveiller les bus
Ulrich Dangel