Neben dem Standard-Befehl mount
(der root voraussetzt) können Sie Laufwerke mit udisks
und dbus
mit Ihrem Standard-Benutzer einbinden.
Um dies zu tun, ist es sinnvoll (aber nicht erforderlich), zunächst ein paar Dinge über das Laufwerk zu wissen:
- Was für ein Gerät es ist (d.d. h.
/dev/sdb1
) - Welches Dateisystem es verwendet.
Mit diesen Kenntnissen können Sie ein Laufwerk mit einem einfachen Befehl von der Kommandozeile aus einbinden.
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>"
Dieser Aufruf sollte bei erfolgreichem Einbinden den Pfad ausgeben, unter dem es eingebunden ist.
Um auf diese Weise gemountete Laufwerke wieder zu trennen, können Sie Folgendes ausführen:
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount
N.B. das <device>
ist einfach das Ende des Pfades dazu. Wenn das, was Sie mounten wollen, zum Beispiel unter /dev/sdb2
liegt, dann würden Sie sdb2
anstelle von <device>
einfügen.
Wenn Sie nicht wissen, um welches Gerät es sich handelt oder welches Dateisystem es verwendet, keine Sorge. Sie können all diese Informationen ganz einfach mit diesem kleinen Befehl ausgeben:
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) ).*|\}|.*\{)"
Dieser gibt etwa Folgendes aus:
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 Geräte, die IdUsage = 'filesystem'
haben, können mit dem obigen Befehl eingehängt werden.
Das heißt, wenn ich zum Beispiel das Gerät ‚USB DRIVE‘ mounten möchte, würde ich den Befehl
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat"
Diese Befehle arbeiten alle mit dem dbus
Nachrichtensystem, genauso wie Nautilus
und andere Dateimanager Dinge automatisch einhängen. In diesen Befehlen senden wir verschiedenen Objekten (d.h. /org/freedesktop/...
Nachrichten mit der Bitte, bestimmte Geräte ein- und auszuhängen. Je nach den Berechtigungen, die man in PolicyKit
erhalten hat, können sie das tun oder auch nicht.
Mit ähnlichen Befehlen kann man fast jeden Aspekt seiner Erfahrung in Ubuntu steuern und die meisten Systemprogramme und -funktionen simulieren (z. B. Herunterfahren, Lautstärkeänderung usw.).