Предупредите пользователя, когда они небезопасно отключат карту флэш-памяти USB

Пользователи неоднократно жалуются на потерянные данные по картам флэш-памяти USB после того, как они отключили их без размонтирования. Мы запускаем Ubuntu 14.04 LTS на наших машинах. Автомонтирование включено.

Поскольку я устал от запоминания их, чтобы сделать безопасное удаление перед отключением, я хочу заставить Ubuntu отобразить предупреждение каждый раз, когда смонтированная Карта памяти отключается.

Я думал о добавлении udev постановите что выполнения notify-send на удалении в случае, если диск все еще смонтирован. Как я могу определить, была ли Карта памяти смонтирована после удаления?

13
задан 21 June 2015 в 03:37

2 ответа

Мне нравится подход Fabby, но хорошо учить людей этой дурной привычке (Они не работают все время над управляемыми машинами). Это подобно функции OSX, как описано здесь .

существует небольшая разница, которую можно использовать его, чтобы знать, был ли это сейф, удалите:

  • udev переменная ID_PART_TABLE_TYPE=dos установлена для sdx, дисковый узел ( НЕ узел раздела sdxY ) в небезопасном удаляет.

  • , Где это не установлено в сейфе, удаляют

Замеченный путем слежения за развитием udev событий:

udevadm monitor -u --environment
  • Безопасный удаляют

    UDEV  [8292.380554] change   /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdb (block)
    ACTION=change
    DEVLINKS=/dev/disk/by-id/usb-ADATA_USB_Flash_Drive_8d90ec535e6663-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0
    DEVNAME=/dev/sdb
    DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdb
    DEVTYPE=disk
    DISK_MEDIA_CHANGE=1
    ID_BUS=usb
    ID_INSTANCE=0:0
    ID_MODEL=USB_Flash_Drive
    ID_MODEL_ENC=USB\x20Flash\x20Drive\x20
    ID_MODEL_ID=c96a
    ID_PATH=pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0
    ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0-scsi-0_0_0_0
    ID_REVISION=0.00
    ID_SERIAL=ADATA_USB_Flash_Drive_8d90ec535e6663-0:0
    ID_SERIAL_SHORT=8d90ec535e6663
    ID_TYPE=disk
    ID_USB_DRIVER=usb-storage
    ID_USB_INTERFACES=:080650:
    ID_USB_INTERFACE_NUM=00
    ID_VENDOR=ADATA
    ID_VENDOR_ENC=ADATA\x20\x20\x20
    ID_VENDOR_ID=125f
    MAJOR=8
    MINOR=16
    SEQNUM=2989
    SUBSYSTEM=block                                                              
    TAGS=:systemd:                                                               
    USEC_INITIALIZED=554873
    
  • Небезопасный, удаляют

    UDEV  [8391.320280] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host17/target17:0:0/17:0:0:0/block/sdb (block)
    ACTION=remove
    DEVLINKS=/dev/disk/by-id/usb-ADATA_USB_Flash_Drive_8d90ec535e6663-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
    DEVNAME=/dev/sdb
    DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host17/target17:0:0/17:0:0:0/block/sdb
    DEVTYPE=disk
    ID_BUS=usb
    ID_INSTANCE=0:0
    ID_MODEL=USB_Flash_Drive
    ID_MODEL_ENC=USB\x20Flash\x20Drive\x20
    ID_MODEL_ID=c96a
    ID_PART_TABLE_TYPE=dos
    ID_PATH=pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
    ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0
    ID_REVISION=0.00
    ID_SERIAL=ADATA_USB_Flash_Drive_8d90ec535e6663-0:0
    ID_SERIAL_SHORT=8d90ec535e6663
    ID_TYPE=disk
    ID_USB_DRIVER=usb-storage
    ID_USB_INTERFACES=:080650:
    ID_USB_INTERFACE_NUM=00
    ID_VENDOR=ADATA
    ID_VENDOR_ENC=ADATA\x20\x20\x20
    ID_VENDOR_ID=125f
    MAJOR=8
    MINOR=16
    SEQNUM=3022
    SUBSYSTEM=block
    TAGS=:systemd:
    USEC_INITIALIZED=436355
    
<час>
  1. , Создают правило udev (изменение useranme)

    $ sudo nano /etc/udev/rules.d/90-unsafe-remove-notify.rules
    
    ACTION=="remove", KERNEL=="sd?", ENV{ID_PART_TABLE_TYPE}!="", RUN+="/usr/bin/sudo -u username DISPLAY=:0 notify-send 'Unsafe Remove' '<b><i>Your long message</b></i>' -i /usr/share/icons/gnome/48x48/emotes/face-worried.png -t 10000"
    
  2. правила Перезагрузки

    sudo udevadm control --reload-rules
    
<час>

Иначе, можно использовать сценарий (Python), которые соединяются с udisks DBUS. Этому все была нужна информация, которую Вы должны о разделе монтировать/размонтировать, диски включаются/отключают...

Ссылка/Источник: хинду Wiki: Udisks - USB_Thumb_Drive_Example

4
ответ дан 23 November 2019 в 03:23

К сожалению, это - вещь, Micro$oft на самом деле стал совершенно правильным: удаление USB... И Вы продолжите иметь эту проблему до Вас:

  1. Отключают автомонтирование

    , Если пользователи должны смонтироваться вручную, будет легче обучить их демонтировать также.

  2. Создают правило udev, которое выключает все кэширование на дисках USB...

8
ответ дан 23 November 2019 в 03:23

Другие вопросы по тегам:

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