Come accedere ad una chiavetta usb dal terminale?

Oltre ad usare il comando standard mount (che richiede root) potete montare le chiavette usando udisks e dbus con il vostro utente standard.

Per fare questo è utile (ma non necessario) sapere prima alcune cose sul drive:

  1. Quale dispositivo è (es.e. /dev/sdb1)
  2. che filesystem usa.

Conoscendo queste cose si può usare un semplice comando per montare un’unità dalla riga di comando.

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>" 

Questa chiamata dovrebbe riportare il percorso in cui è montata se il montaggio ha successo.

Per smontare le unità montate in questo modo potete eseguire:

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount 

N.B. il <device> è semplicemente la fine del percorso. Quindi, per esempio, se ciò che volete montare si trova a /dev/sdb2 allora metterete sdb2 al posto di <device>.

Se non sapete che dispositivo è o che filesystem usa non temete. Potete facilmente stampare tutte queste informazioni con questo piccolo comando:

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) ).*|\}|.*\{)"

Questo stamperà qualcosa come questo:

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'; }; };};

Quelli che hanno IdUsage = 'filesystem' possono essere montati usando il comando precedente.

Questo significa che, per esempio, se volessi montare il dispositivo ‘USB DRIVE’ eseguirei il comando

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" 

Questi comandi funzionano tutti usando il sistema di messaggistica dbus, nello stesso modo in cui Nautilus e altri file manager montano automaticamente le cose. In questi comandi stiamo inviando vari oggetti (cioè /org/freedesktop/... messaggi chiedendo loro di montare e smontare certi dispositivi. Potrebbero farlo o meno a seconda dei permessi che sono stati dati in PolicyKit.

Utilizzando comandi simili si può controllare quasi ogni aspetto della propria esperienza in Ubuntu e simulare la maggior parte dei programmi e delle funzioni di sistema (es. spegnimento, cambio volume, ecc).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *