usb - 我想使用 udev 规则阻止除键盘和鼠标之外的所有 USB 设备?
问题描述
我想使用 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 键盘和鼠标。
解决方案
推荐阅读
- javascript - 为什么 map.has() 为已删除的对象返回 false?
- c++ - ASIO 正确处理多线程 + strand + socket + timer
- composer-php - 神器作曲家packages.json 404
- linux - 通过 ssh 连接到外部服务器
- python - 如何在 python 3.7 中安装pyramid-arima
- java - 如何从 Xamarin 打开从 Android Studio 创建的活动?
- python - python将位置从一个def导入另一个def以从天气API打印位置
- node.js - Express:用子资源定义 REST API?
- docker - Docker:如何将带有数据的容器从一台主机传输到另一台主机
- fortran - 在 Fortran90 内在函数上使用常规指令