Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Выборочное монтирование флэшек  (Прочитано 1218 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн improoviz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Как сделать так, чтобы при втыкании USB-флэшек, работала только одна-единственная флэшка?

Знаю, что нужно копать в сторону udev, знаю, что нужно писать свое правило. Что я, собственно, и сделал.
Выяснив с помощью lsusb данные экспериментируемой флэхи, написал огромное правило:
DRIVERS==”sd”, ATTRS{idVendor}=="125f", ATTRS{idProduct}=="c08a" SYMLINK=”azn-usb”
Но правило не работает. Кроме того, мне почему-то кажется что тут явно чего-то не хватает, поскольку тут только данные подключения одной флэшки, и не речи про то, что остальные флэхи подключать нельзя. А это является конечной целью.

Может кто подскажет как сделать так, чтобы идея работала.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #1 : 21 Июля 2014, 18:24:14 »
Так к правилу действие? А второй строчкой для всех остальных. Найдите образец для общего понимания.
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн improoviz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #2 : 22 Июля 2014, 13:08:35 »
Azure,
Может быть так?
ACTION=="add", SYBSYSTEMS="usb", DRIVERS==”sd”, ATTRS{idVendor}=="125f", ATTRS{idProduct}=="c08a" SYMLINK=”azn-usb”

ACTION=="remove", SUBSYSTEMS="usb", DRIVERS==”sd”   

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #3 : 22 Июля 2014, 13:38:00 »
Действие может быть например ENV{UDISKS_PRESENTATION_HIDE}="1" или ENV{UDISKS_IGNORE}="1"SYBSYSTEMS=="usb", ATTRS{idVendor}=="125f", ATTRS{idProduct}=="c08a", ENV{UDISKS_IGNORE}="0"
SUBSYSTEMS=="usb", DRIVERS=="sd", ENV{UDISKS_IGNORE}="1"
Подробнее можно почитать тут
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн improoviz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #4 : 22 Июля 2014, 14:38:17 »
Действие может быть например ENV{UDISKS_PRESENTATION_HIDE}="1" или ENV{UDISKS_IGNORE}="1"SYBSYSTEMS=="usb", ATTRS{idVendor}=="125f", ATTRS{idProduct}=="c08a", ENV{UDISKS_IGNORE}="0"
SUBSYSTEMS=="usb", DRIVERS=="sd", ENV{UDISKS_IGNORE}="1"
Подробнее можно почитать тут
Здорово, но не работает. Все флэхи читатются. Может дело в файловом менеджере? Xfce, Thunar.
Ту статью я видел, разбирал как мог, туговато с английским.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #5 : 22 Июля 2014, 18:28:59 »
Если так?SYBSYSTEMS=="usb", ATTRS{idVendor}=="125f", ATTRS{idProduct}=="c08a", ENV{UDISKS_IGNORE}="0",  OPTIONS+="last_rule"
KERNEL=="sd[b-z][0-9]", SUBSYSTEMS=="block", ATTRS{removable}=="1", ENV{UDISKS_IGNORE}="1"
То же на русском. Надо добить чтоб не монтировало, а потом сделать исключение для "нужной" флэшки. Да и покажите наконецudevinfo -a -p /sys/block/sd{буква_для_флэшки}
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн improoviz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #6 : 23 Июля 2014, 08:09:55 »
Надо добить чтоб не монтировало, а потом сделать исключение для "нужной" флэшки. Да и покажите наконецudevinfo -a -p /sys/block/sd{буква_для_флэшки}
А как сделать это самое исключение то? Я к сожалению круглый нубас, хотя готов разобраться.
root@0000-250:~# udevadm info -a -p /sys/block/sdb

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host8/target8:0:0/8:0:0:0/block/sdb':
    KERNEL=="sdb"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{range}=="16"
    ATTR{ext_range}=="256"
    ATTR{removable}=="1"
    ATTR{ro}=="0"
    ATTR{size}=="7826688"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="0"
    ATTR{capability}=="51"
    ATTR{stat}=="     294     7518     9002      580        1        0        1        0        0      364      580"
    ATTR{inflight}=="       0        0"
    ATTR{events}=="media_change"
    ATTR{events_async}==""
    ATTR{events_poll_msecs}=="-1"

  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host8/target8:0:0/8:0:0:0':
    KERNELS=="8:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="3"
    ATTRS{vendor}=="ADATA   "
    ATTRS{model}=="USB Flash Drive "
    ATTRS{rev}=="1100"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x843"
    ATTRS{iodone_cnt}=="0x843"
    ATTRS{ioerr_cnt}=="0x1"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"
    ATTRS{max_sectors}=="240"

  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host8/target8:0:0':
    KERNELS=="target8:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host8':
    KERNELS=="host8"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0':
    KERNELS=="1-2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2':
    KERNELS=="1-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{urbnum}=="4556"
    ATTRS{idVendor}=="125f"
    ATTRS{idProduct}=="c08a"
    ATTRS{bcdDevice}=="1100"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="2"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="ADATA"
    ATTRS{product}=="ADATA USB Flash Drive"
    ATTRS{serial}=="1291822131250060"

  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="33"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0302"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="4"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 3.2.0-4-686-pae ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:1a.7"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1a.7':
    KERNELS=="0000:00:1a.7"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x283a"
    ATTRS{subsystem_vendor}=="0x1458"
    ATTRS{subsystem_device}=="0x5006"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="18"
    ATTRS{local_cpus}=="ffffffff"
    ATTRS{local_cpulist}=="0-31"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""
    ATTRS{uframe_periodic_max}=="100"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

На всякий случай привожу lsusb (моя флэха последняя):
root@0000-250:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 10d5:0116 Uni Class Technology Co., Ltd
Bus 001 Device 002: ID 125f:c08a A-DATA Technology Co., Ltd.

За ссылку спасибо, курю.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Выборочное монтирование флэшек
« Ответ #7 : 23 Июля 2014, 15:24:50 »
А так?KERNEL=="sd[b-z]", SUBSYSTEMS=="block", SUBSYSTEMS=="usb", DRIVERS=="usb", ATTRS{removable}=="1", ATTRS{serial}!="1291822131250060", ATTRS{device_blocked}="1"
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.031 секунд. Запросов: 26.