про udev.

Как подмонировать usb-флешку по определенным правилам, условиям?

Допустим как подмонтировать флешку с определенным uuid в режиме только для чтения, но чтобы при этом остальные флешки монтировались в режиме rw.

Всё это легко реализуется через правила udev.

Прежде чем использовать правила udev в юбунте, например, нужно отключить автоматическое монтирование. Сделать это можно через вызов gconf-editor и потом убрать галочку media_automount в свойствах nautilus.

Если нет такого свойства в gconf-editor, то можно через утилиту gnome-disks отключить автоматическое подключение.

Теперь о создании правил:

Правило - это файлик в папочке /etc/udev/rules.d

Имя файла должно начинаться с цифры, а заканчиваться .rules, для примера вот так - 10-automnt.rules

Вот такая строка в файле будет означать, что при подключении флешки произвести её монтирование к home/mnt

SUBSYSTEM=="block", KERNEL=="sd[c-z][0-9]", ACTION=="add", RUN+="/bin/mount -O uid=1000 /dev/%k /home/mnt

ACTION=="add" - подключение устройства

RUN+= - то что нужно выполнить при наступлении этого события

Для отмонтирования флешки при отключении нужна вот такая запись:

SUBSYSTEM=="block", KERNEL=="sd[c-z][0-9]", ACTION=="remove", RUN+="/bin/umount /home/mnt"

ACTION=="remove" - отключение устройства.

После того как в файл 10-automnt.rules внесены изменения и чтобы они вступили в силу нужно выполнить:

$ udevadm config --reload-rules

Для получения информации о том какими атрибутами в udev можно оперировать по отношении к тому или иному устройству можно выполнить вот такую команду:

$ udevadm info -a -n /dev/sdc1

Либо запустить udevadm в режиме монитора и в этот момент подключить usb-флешку:

$ udevadm monitor --property --kernel --udev

Все существующие атрибуты, которые выдает udevadm можно применять в строке правил. Так например следующая строка будет выполняться применительно к устройствам имеющих вот такой серийный номер:

SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ATTRS{serial}=="0013728A7896EA61C0000000" ACTION=="add", RUN+="/home/mnt_script.sh %k"

Условия можно объединять следующим образом:

SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]",ATTRS{speed}=="12", ATTRS{serial}=="0013728A7896EA61C0000000" ACTION=="add", RUN+="/home/mnt_script.sh %k"