[ Prev ] [ Index ] [ Next ]

Automount USB and HDD

Created Saturday 31 December 2016


We'll need Udisk2 to read/write to our external devices and Udevil to automatic mount the devices when plugged in. We'll also add some extra partition scheme support - fat and ntfs to be specific.


Usage

# Once the installation steps below has been completed, devices should mount automatic.
# Devices will be mounted at /media/<USER_NAME>/<DEVICE_NAME>


# You need to manual unmount the device once you're done (always do this before unplugging)
$ udevil unmount /media/<USER_NAME>/<DEVICE_NAME>


Installation

# For ntfs and fat support
$ pacman -S ntfs-3g dosfstools


# For mount/auto-mount
$ pacman -S udisks2 udevil


# Remove the SUID permission from Udevil (with sudo)
$ chmod u+s,go-s,ugo+x /usr/bin/udevil


# Enable the service file, taking the username as an argument
$ systemctl enable devmon@<USER_NAME>.service


# Create a file in /etc/polkit-1/rules.d/50-udevil.rules

polkit.addRule(function(action, subject) {
  var YES = polkit.Result.YES;
  // NOTE: there must be a comma at the end of each line except for the last:
  var permission = {
    // required for udisks1:
    "org.freedesktop.udisks.filesystem-mount": YES,
    "org.freedesktop.udisks.luks-unlock": YES,
    "org.freedesktop.udisks.drive-eject": YES,
    "org.freedesktop.udisks.drive-detach": YES,
    // required for udisks2:
    "org.freedesktop.udisks2.filesystem-mount": YES,
    "org.freedesktop.udisks2.encrypted-unlock": YES,
    "org.freedesktop.udisks2.eject-media": YES,
    "org.freedesktop.udisks2.power-off-drive": YES,
    // required for udisks2 if using udiskie from another seat (e.g. systemd):
    "org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
    "org.freedesktop.udisks2.filesystem-unmount-others": YES,
    "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
    "org.freedesktop.udisks2.eject-media-other-seat": YES,
    "org.freedesktop.udisks2.power-off-drive-other-seat": YES
  };
  if (subject.isInGroup("storage")) {
    return permission[action.id];
  }
});