про 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"