Les utilisateurs se plaignent à plusieurs reprises de la perte de données sur des clés USB après les avoir débranchés sans les démonter. Nous utilisons Ubuntu 14.04 LTS sur nos machines. Le montage automatique est activé.
Comme j'en ai marre de leur rappeler de procéder à un retrait en toute sécurité avant de débrancher, je souhaite que Ubuntu affiche une alerte à chaque fois qu'une clé USB montée est débranchée.
J'ai pensé à ajouter une règle udev
qui exécute notify-send
lors de son retrait si le lecteur est toujours monté. Comment puis-je déterminer si le lecteur USB a été monté lors de son retrait?
J'aime l'approche de Fabby, mais il est bon d'enseigner aux gens cette mauvaise habitude (ils ne travaillent pas tout le temps sur des machines contrôlées). Ceci est similaire à une fonctionnalité OSX, comme décrit ici .
Il y a une petite différence que vous pouvez utiliser pour savoir s'il s'agissait d'une suppression sûre:
la variable udev ID_PART_TABLE_TYPE=dos
est définie pour sdx
noeud de disque ( PAS le noeud de partition sdxY
) lors d'une suppression non sécurisée.
Où il n'est pas mis en sécurité retirer
Remarqué par la surveillance des événements udev:
udevadm monitor -u --environment
Suppression en toute sécurité
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
Suppression non sécurisée
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
Créer une règle udev (change 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"
Recharger les règles
Sudo udevadm control --reload-rules
Vous pouvez également utiliser un script (python) qui se connecte à udisks
DBUS. Il contient toutes les informations nécessaires sur le montage/démontage de la partition, les disques plug/unplug ...
Référence/Source: Wiki Gentoo: Udisks - USB_Thumb_Drive_Example
Malheureusement, c'est une chose que Micro $ a souvent eu raison: la suppression de l'USB ... Et vous continuerez à avoir ce problème jusqu'à ce que vous:
Désactiver le montage automatique
Si les utilisateurs doivent monter manuellement, il sera également plus facile de les entraîner à démonter.
Créez une règle udev qui désactive la mise en cache sur les disques USB ...