En plus d’utiliser la commande standard mount
(qui nécessite root), vous pouvez monter des lecteurs en utilisant udisks
et dbus
avec votre utilisateur standard.
Pour ce faire, il est utile (mais pas obligatoire) de connaître d’abord quelques éléments sur le lecteur :
- Quel est le périphérique (i.e.
/dev/sdb1
) - Quel système de fichiers il utilise.
Connaissant ces éléments, vous pouvez utiliser une commande simple pour monter un lecteur à partir de la ligne de commande.
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>"
Cet appel devrait faire écho au chemin où il est monté si le montage réussit.
Pour démonter des lecteurs montés de cette façon, vous pouvez exécuter :
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount
N.B. le <device>
est simplement la fin du chemin d’accès à celui-ci. Ainsi, par exemple, si ce que vous voulez monter se trouve à /dev/sdb2
, vous mettrez sdb2
à la place de <device>
.
Si vous ne savez pas de quel périphérique il s’agit ou quel système de fichiers il utilise, n’ayez crainte. Vous pouvez facilement imprimer toutes ces informations avec cette petite commande :
gdbus introspect --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices --recurse --only-properties | grep -E "(readonly .+ (IdLabel|IdType|Device(IsMounted|IsDrive|File) ).*|\}|.*\{)"
Cela donnera quelque chose comme ceci :
node /org/freedesktop/UDisks/devices { node /org/freedesktop/UDisks/devices/sda { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda'; }; }; node /org/freedesktop/UDisks/devices/sda1 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'SYSTEM'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda1'; }; }; node /org/freedesktop/UDisks/devices/sda2 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'Windows7'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda2'; }; }; node /org/freedesktop/UDisks/devices/sda3 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'Recovery'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda3'; }; }; node /org/freedesktop/UDisks/devices/sda4 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda4'; }; }; node /org/freedesktop/UDisks/devices/sda5 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = 'ext4'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda5'; }; }; node /org/freedesktop/UDisks/devices/sda6 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = 'swap'; readonly s IdUsage = 'other'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda6'; }; }; node /org/freedesktop/UDisks/devices/sda7 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = 'ext4'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda7'; }; }; node /org/freedesktop/UDisks/devices/sdb { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sdb'; }; }; node /org/freedesktop/UDisks/devices/sdb1 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'USB DRIVE'; readonly s IdType = 'vfat'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sdb1'; }; }; node /org/freedesktop/UDisks/devices/sr0 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sr0'; }; };};
Ceux qui ont IdUsage = 'filesystem'
peuvent être montés en utilisant la commande ci-dessus.
Cela signifie que, par exemple, si je voulais monter le périphérique ‘USB DRIVE’, je lancerais la commande
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat"
Ces commandes fonctionnent toutes en utilisant le système de messagerie dbus
, de la même manière que Nautilus
et d’autres gestionnaires de fichiers montent automatiquement les choses. Dans ces commandes, nous envoyons divers objets (c’est-à-dire des messages /org/freedesktop/...
leur demandant de monter et démonter certains périphériques. Ils pourraient ou non le faire en fonction des autorisations que l’on a données dans PolicyKit
.
En utilisant des commandes similaires, on peut contrôler presque tous les aspects de son expérience dans Ubuntu et simuler la plupart des programmes et fonctions du système (c’est-à-dire l’arrêt, le changement de volume, etc.).