Hoe krijg ik toegang tot een usb flash drive vanaf de terminal?

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:

  1. Wat voor apparaat het is (i.d.w.z. /dev/sdb1)
  2. 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.).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *