Naast het gebruik van het standaard mount
commando (dat root vereist) kun je drives mounten met udisks
en dbus
met je standaard gebruiker.
Om dit te doen is het handig (maar niet vereist) om eerst een paar dingen over de schijf te weten:
- Wat voor apparaat het is (i.d.w.z.
/dev/sdb1
) - welk bestandssysteem het gebruikt.
Ken je deze dingen, dan kun je een simpel commando gebruiken om een drive te mounten vanaf de commandoregel.
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>"
Deze aanroep moet het pad echoën waarop het gemount is, als het mounten lukt.
Om op deze manier gemounte drives te unmounten kunt u uitvoeren:
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount
N.B. de <device>
is gewoon het einde van het pad er naar toe. Dus als datgene wat u wilt mounten bijvoorbeeld op /dev/sdb2
staat, dan zet u sdb2
in plaats van <device>
.
Als u niet weet welk apparaat het is of welk bestandssysteem het gebruikt, hoeft u niet bang te zijn. U kunt al die informatie gemakkelijk uitprinten met dit kleine commando:
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) ).*|\}|.*\{)"
Dit zal iets als dit uitprinten:
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'; }; };};
Die IdUsage = 'filesystem'
kunnen gemount worden met het bovenstaande commando.
Dit betekent dat als ik bijvoorbeeld het apparaat ‘USB DRIVE’ wil mounten, ik het commando
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat"
Deze commando’s werken allemaal met het dbus
berichtensysteem, op dezelfde manier als Nautilus
en andere bestandsbeheerders dingen auto-mounten. In deze commando’s sturen we verschillende objecten (d.w.z. /org/freedesktop/...
berichten die hen vragen om bepaalde apparaten te mounten en unmounten. Ze kunnen dit wel of niet doen, afhankelijk van de permissies die men heeft gekregen in PolicyKit
.
Met soortgelijke commando’s kan men bijna elk aspect van zijn ervaring in Ubuntu controleren en de meeste systeem programma’s en functies simuleren (bijv. afsluiten, volume veranderen, etc.).