我想使用 udev 规则阻止除 USB 键盘和 USB 鼠标之外的所有 USB 设备?目的是限制用户连接外部存储设备(闪存驱动器、手机内部存储和 iOS 设备存储)。
限制用户从 16.04 及以上版本的 Ubuntu 机器传输数据到这些设备。
限制 mtp 移动传输协议以及限制照片传输。
在终端中使用 sudo 权限登录机器。
# Sudo –i
List the usb ports:
#lsmod |grep usb
Edit the blacklist.conf file
# Sudo vi /etc/modeprobe.d/blacklist.conf
blacklist usb_storge
blacklist uas
blacklist usbhid
#Sudo vi /etc/rc.local/
modprobe -r usb_storage
modprobe -r uas
modprob usbhid
保存 重启机器。但移动存储设法将存储连接到机器。
所以现在尝试 udev 规则,我已尝试遵循所有端口(usb/1-3、usb1/1-3..)但它也阻止了 kb 鼠标
#echo 0 > / sys/bus/usb/devices/1-3/authorized
我尝试过的其他选项:
/etc/udev/rules.d/01-usblockdown.rules
The contents of the script are as follows:
#Script by Adrian Crenshaw
#With info from Michael Miller, Inaky Perez-Gonzalez and VMWare
#By default, disable it.
#ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'echo 0 >/sys$DEVPATH/authorized'"<br>
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
#Enable hub devices. There may be a better way than this.
ACTION=="add", ATTR{bDeviceClass}=="09", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
#Other things to enable
ACTION=="add", ATTR{idVendor}=="046d", ATTR{idProduct}=="0809", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{serial}=="078606B90DD3", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{product}=="802.11 n WLAN", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
#ACTION=="add", ATTR{idVendor}=="413c", ATTR{idProduct}=="2106", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
它还会阻止 USB 键盘和鼠标。
答案1
只是提示:
/etc/modeprobe.d/blacklist.conf .. blacklist
不适用于所有类型的驱动程序。有些不是外部模块,因此需要传递特殊参数/etc/default/grub .. GRUB_CMDLINE_LINUX_DEFAULT
。usbhid
是键盘、鼠标和操纵杆的核心 USB HID(人机接口设备)驱动程序。最好放弃它,这样你仍然可以访问机器。最好准备 OpenSSH 登录以防万一。- 检查
lsusb -t
是否udevadm info -a ...
仅连接了鼠标/键盘。收集所有活动 USB 驱动程序的列表。我期望获得:USB1/2/3 集线器、鼠标、键盘、SD 卡读卡器、蓝牙。 - 制定与以下规则类似的规则:这个帖子为了解除司机绑定,可能只允许 USB 集线器和 USB HID 驱动器。
如果您遇到阻碍,请使用收集到的信息更新问题,并通过评论告知我。
答案2
尝试这个
ctrl+ alt+t
类型 :sudo nautilus n /usr/lib/gvfs/
按enter
输入您的密码
将打开一个页面,选中该页面并gvfsd-mtp
单击鼠标右键
取消选中(允许将文件作为程序执行)
关闭它并在终端类型中init 6
按回车键
系统将重新启动,现在检查