Files
automount/README.md
Dimitry Ishenko 8d941a30e4 Update README
2025-01-14 23:15:23 -05:00

183 lines
4.3 KiB
Markdown

# Auto-mount Service for Systems with No Desktop
**Auto-mount** uses
[`udisks`](https://www.freedesktop.org/wiki/Software/udisks/) to monitor and
respond to block-device related events, such as USB or optical drive
insertion/removal, partition mounting/unmounting, and more.
Out of the box, **auto-mount** will automatically mount any block device
containing a filesystem, when it appears in the system.
## Configuration
**Auto-mount** actions are controlled by config files, which are plain-text
INI-style files with `.conf` extension, consisting of section names (enclosed
in `[]`) followed by actions to be performed.
Config files are located in the `/etc/automount/` directory (typically) and are
parsed in alphabetical order. Actions in the most recent config files override
the ones in earlier files.
Here is an example of the default config file that comes with **auto-mount**:
```ini
/etc/automount/10-default.conf:
[ID_FS_USAGE=filesystem]
auto-mount = yes
```
And, here is an example of a file overriding the default action for a specific
drive:
```ini
/etc/automount/20-override.conf:
[ID_FS_UUID=E428-616E]
auto-mount = no
```
### Sections and Properties
Section names consist of one or more space-delimited match conditions, which
can have one of the following forms:
`property=value`, `!property=value`, `property` or `!property`
The first two forms match on equality and inequality respectively, while the
last two match on the presence or absence of a certain property.
Values in match conditions can contain wild-card characters, such as:
`*`, `?`, `[abc]` or `[!def]`
Here is an example of a section that will match optical media containing a
filesystem:
```ini
20-optical.conf:
[ID_FS_USAGE=filesystem ID_CDROM]
on-unmount = /bin/eject ${DEVNAME}
```
and will eject the media once it's unmounted.
Another example of a section, which will cause UDF filesystems on non-optical
drives to be mounted with different options:
```ini
20-vfat.conf:
[ID_FS_TYPE=udf !ID_TYPE=cd]
mount-options = uid=1000,gid=1000
```
You can obtain a list of all properties for a given block device using `udevadm`:
```sh
user@linux:~$ udevadm info -q env /dev/sr0
```
```sh
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-8/3-8:1.0/host0/target0:0:0/0:0:0:0/block/sr0
DEVNAME=/dev/sr0
DEVTYPE=disk
MAJOR=11
MINOR=0
SUBSYSTEM=block
...
ID_CDROM=1
ID_BUS=usb
ID_MODEL=BD-RE_BU40N
ID_TYPE=cd
ID_USB_DRIVER=usb-storage
...
ID_FS_UUID=d042881731342041
ID_FS_LABEL=FROM_RUSSIA_WITH_LOVE
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
...
```
or:
```sh
user@linux:~$ udevadm info -q env /dev/sda1
```
```sh
DEVPATH=/devices/pci0000:00/0000:00:0d.0/usb2/2-1/2-1:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1
DEVNAME=/dev/sda1
DEVTYPE=partition
PARTN=1
MAJOR=8
MINOR=1
SUBSYSTEM=block
...
ID_BUS=usb
ID_MODEL=STORAGE_DEVICE
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
...
ID_PART_TABLE_UUID=d526b372
ID_PART_TABLE_TYPE=dos
ID_FS_LABEL=TEMP
ID_FS_UUID=E428-616E
ID_FS_VERSION=FAT32
...
ID_FS_TYPE=vfat
ID_FS_USAGE=filesystem
...
```
When a block-device event occurs, **auto-mount** extracts actions from all
sections with matching conditions, with actions in later sections overriding
the ones in earlier sections.
### Actions
An action can be any of the following:
```
auto-mount = yes|no
mount-options = ...
mount-as = [user][:group]
on-mount = ...
on-unmount = ...
on-add = ...
on-remove = ...
on-change = ...
```
where `...` represents a command to be executed when the action is triggered.
For example:
```ini
50-spin-down.conf:
[ID_TYPE=cd]
# set spin-down time to 20 minutes
on-add = /sbin/hdparm -S 240 ${DEVNAME}
```
Commands support basic variable substitution in the form `${VARIABLE}`, where
`VARIABLE` can be any of the device properties.
Additionally, the `on-mount` and `on-unmount` actions can use the
`${MOUNT_POINT}` property to determine the current mount point.
*Note: The same block device can be mounted at multiple mount points, and the
`on-mount` and `on-unmount` actions will be executed for each mount point.*
The `mount-options` and `mount-as` values are only applicable when
`auto-mount = yes`.
Share and enjoy.
## Authors
* **Dimitry Ishenko** - dimitry (dot) ishenko (at) (gee) mail (dot) com
## License
This project is distributed under the GNU GPL license. See the
[LICENSE.md](LICENSE.md) file for details.