udev: Смонтируйте зашифрованный том на вставку карты с интерфейсом USB

У меня есть зашифрованный раздел, который я хотел бы смонтировать автоматически, когда я вставляю палку usb, содержащую ключ, и я хотел бы размонтировать его (и закрыть картопостроитель), когда палка удалена. Я использую Кармическую Ubuntu.

Кажется, существует пара проектов, которые делают попытку этого для TrueCrypt (например, http://sourceforge.net/projects/tc-wrapper/), но ничто на основе dmcrypt/LUKS. Таким образом, я думал, что попытаю своего счастья с записью правила udev. После многих расстраивающих часов я придумал это:

ACTION=="add", SUBSYSTEM=="block", ATTRS{model}=="Flash Disk", ATTRS{vendor}=="USB2.0", RUN+="/home/michael/trigger-mount.sh encrypted"
ACTION=="remove", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="0204", ENV{ID_MODEL_ID}=="6025", RUN+="/home/michael/trigger-mount.sh encrypted"

Это работает, но не хорошо. Проблема здесь состоит в том, что первое правило не будет соответствовать на удалении, второй не будет соответствовать на дополнении.

udevadm monitor --property шоу это (и в значительной степени то же самое на "добавляют").

UDEV  [1264556064.762870] remove   /devices/pci0000:00/0000:00:02.0/usb2/2-4/2-4:1.0/host47/target47:0:0/47:0:0:0/block/sde (block)
UDEV_LOG=3
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-4/2-4:1.0/host47/target47:0:0/47:0:0:0/block/sde
SUBSYSTEM=block
DEVNAME=/dev/sde
DEVTYPE=disk
SEQNUM=3512
ID_VENDOR=USB2.0
ID_VENDOR_ENC=USB2.0\x20\x20
ID_VENDOR_ID=0204
ID_MODEL=Flash_Disk
ID_MODEL_ENC=Flash\x20Disk\x20\x20\x20\x20\x20\x20
ID_MODEL_ID=6025
ID_REVISION=2.00
ID_SERIAL=USB2.0_Flash_Disk-0:0
ID_TYPE=disk
ID_INSTANCE=0:0
ID_BUS=usb
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=usb-storage
ID_PATH=pci-0000:00:02.0-usb-0:4:1.0-scsi-0:0:0:0
DKD_MEDIA_AVAILABLE=1
DKD_PRESENTATION_NOPOLICY=0
MAJOR=8
MINOR=64
DEVLINKS=/dev/block/8:64 /dev/disk/by-id/usb-USB2.0_Flash_Disk-0:0 /dev/disk/by-path/pci-0000:00:02.0-usb-0:4:1.0-scsi-0:0:0:0

Это, кажется, содержит все данные, которые были бы необходимы для соответствия обоим правилам в обоих случаях (добавьте, удалите).

Для пользы полноты вот вывод udevadm info -a -p /sys/block/sde/:

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2/2-4/2-4:1.0/host48/target48:0:0/48:0:0:0/block/sde':
    KERNEL=="sde"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{range}=="16"
    ATTR{ext_range}=="256"
    ATTR{removable}=="1"
    ATTR{ro}=="0"
    ATTR{size}=="512000"
    ATTR{alignment_offset}=="0"
    ATTR{capability}=="53"
    ATTR{stat}=="      16       47      504      510        0        0        0        0        0      380      510"

  looking at parent device '/devices/pci0000:00/0000:00:02.0/usb2/2-4/2-4:1.0/host48/target48:0:0/48:0:0:0':
    KERNELS=="48:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="3"
    ATTRS{vendor}=="USB2.0  "
    ATTRS{model}=="Flash Disk      "
    ATTRS{rev}=="2.00"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x41"
    ATTRS{iodone_cnt}=="0x41"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{modalias}=="scsi:t-0x00"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"
    ATTRS{max_sectors}=="240"

 ....

Кто-либо может пролить некоторый свет на это?

2
задан 27.01.2010, 04:48

1 ответ

Я описал некоторую информацию об использовании udev как утилита автоматического монтирования в более раннем ответе; это (или ресурсы, с которыми это связывается) может пролить некоторый свет для Вас.

Мне не ясно, каков точно Ваш вопрос

  • Относительно отдельного добавляют и удаляют правила: Вы смогли консолидировать их, если Вы отбрасываете соответствие ДЕЙСТВИЯ, но это могло бы привести к правилу, стреляющему слишком часто. Я думаю, что лучше явно соответствовать каждому правилу. Или еще лучше (по причинам, обсужденным в разделе размонтирования ниже), отбросьте "удалить" правило в целом.

  • Относительно ВЫПОЛНЕННЫХ действий в правилах uDev: действие ВЫПОЛНЕНИЯ в Вашем правиле uDev должно завершиться быстро. Смотрите на пример, с которым я связался; Вы будете видеть, что существует два сценария - uDev, звонит один, который отделяет другой, чтобы сделать фактическое монтирование, позволяя первому возвратить управление обработкой назад uDev своевременно. Если Вы уже делаете это, большое; в противном случае рассмотрите тонкую настройку Ваших сценариев подобным способом.

  • Относительно размонтирований: Я испытал много затруднений с автоматическим размонтированием на удалении устройства, и я в конечном счете решил не использовать "удалить" правило вообще. Вместо этого я записал отдельный unmounter сценарий, который заменил "удалить" правило.

    Это вызвано тем, что необходимо действительно дать ОС столько времени, сколько она должна закрыть устройство перед физическим удалением ее. Это - одна вещь дергать диск, если Вы смонтировали файловую систему, только для чтения, но полная файловая система чтения-записи должна быть чисто демонтирована, когда это возможно. (Это - то, что делает опция "Safely Remove Drive" в Windows - это - механизм для размонтирования диска, прежде чем устройство будет физически удалено из системы.)

    С регулярной файловой системой я смог получить некоторые размонтирования, работающие "правильно" при помощи sync опция во время монтирования и umount -l (ленивые размонтирования) при размонтировании. Ленивые размонтирования говорят ядру сразу отсоединить файловую систему, но ссылки очистки на файловую систему позже, когда они больше не заняты. Этот вид работ, но это не столь безопасно для данных как выполнение полного размонтирования прежде, чем удалить устройство.

    Вы можете испытать затруднения, заставив ленивые размонтирования работать с зашифрованной файловой системой по тем же причинам. Картопостроитель устройства добавляет еще один слой сложности сверху стандартных проблем файловой системы. Это кажется мне, это сделало бы зашифрованную файловую систему еще более чувствительной к грязному, демонтирует. (Я не очень опытен с зашифрованным FSS, тем не менее, таким образом, они могут терпеть его.)

Надо надеяться, это дает Вам некоторые подсказки. Откровенно говоря, для автомонтирования целей, uDev осуществим, но не идеален. Демон HalEvt или более новый DeviceKit, вероятно, были бы более соответствующими.

1
ответ дан 12.12.2019, 00:31

Теги

Похожие вопросы