在用户不安全地拔下USB拇指驱动器时提醒用户
用户反复抱怨USB拇指驱动器上的数据丢失后,如果没有卸载则拔掉它们。 我们在我们的机器上运行Ubuntu 14.04 LTS。 启用自动安装。
由于我已经厌倦了在拔掉插头之前记住它们进行安全移除,因此我想在拔出已安装的USB驱动器时让Ubuntu显示警报。
我考虑添加一个udev
规则,在驱动器仍然挂载的情况下运行notify-send
。 如何确定卸下后是否安装了USB驱动器?
我喜欢Fabby的方法,但向人们讲述这种坏习惯是很好的(他们不会一直在受控机器上工作)。 这与OSXfunction类似,如此处所述。
您可以使用它来了解它是否安全删除:
-
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
-
创建一个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' 'Your long message' -i /usr/share/icons/gnome/48x48/emotes/face-worried.png -t 10000"
-
重新加载规则
sudo udevadm control --reload-rules
另一种方法,您可以使用连接到udisks
DBUS的脚本(python)。 它有关于分区安装/卸载,磁盘插拔的所有需要的信息…
参考/来源: Gentoo Wiki:Udisks – USB_Thumb_Drive_Example
不幸的是,这是Micro $ oft实际上非常正确的事情:USB移除……你会继续遇到这个问题,直到你:
-
禁用自动安装
如果用户必须手动安装,那么训练他们也更容易下马。
-
创建一个udev规则, 关闭USB磁盘上的所有缓存 …