原文链接:【信创】Linux终端禁用USB存储 | 统信 | 麒麟 | 方德
Hello,大家好啊!今天给大家带来一篇关于在Linux终端下禁用USB存储设备的文章。禁用USB存储设备可以提高系统的安全性,防止未经授权的人员将数据拷贝到外部存储设备或从USB设备导入恶意软件。本文将介绍如何通过修改系统配置禁用USB存储,确保系统的安全。欢迎大家分享转发,点个关注和在看吧!关注公众号回复“USB”,获取文章脚本。
禁用USB存储的几种方法
在Linux系统中,可以通过多种方法禁用USB存储设备。以下几种方法可以根据不同的需求选择使用:
通过modprobe禁用USB存储模块。
通过udev规则阻止USB存储设备的挂载。
通过设置blacklist禁用USB存储驱动程序。
1.查看系统信息
pdsyw@pdsyw1024:~/Desktop$ cat /etc/os-release
NAME="Kylin"
VERSION="银河麒麟桌面操作系统V10 (SP1)"
VERSION_US="Kylin Linux Desktop V10 (SP1)"
ID=kylin
ID_LIKE=debian
PRETTY_NAME="Kylin V10 SP1"
VERSION_ID="v10"
HOME_URL="http://www.kylinos.cn/"
SUPPORT_URL="http://www.kylinos.cn/support/technology.html"
BUG_REPORT_URL="http://www.kylinos.cn/"
PRIVACY_POLICY_URL="http://www.kylinos.cn"
VERSION_CODENAME=kylin
UBUNTU_CODENAME=kylin
PROJECT_CODENAME=V10SP1
KYLIN_RELEASE_ID="2303"
pdsyw@pdsyw1024:~/Desktop$ uname -a
Linux pdsyw1024 4.19.71-42-kr990 #39-KYLINOS SMP PREEMPT Wed Jun 5 10:46:59 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
pdsyw@pdsyw1024:~/Desktop$
2.查看CPU信息
pdsyw@pdsyw1024:~/Desktop$ lscpu
架构: aarch64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
CPU: 8
在线 CPU 列表: 0-7
每个核的线程数: 1
每个座的核数: 2
座: 3
厂商 ID: ARM
型号: 0
型号名称: HUAWEI Kirin 990
步进: r1p0
CPU 最大 MHz: 2861.0000
CPU 最小 MHz: 554.0000
标记: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
cpuid asimdrdm lrcpc dcpop asimddp
pdsyw@pdsyw1024:~/Desktop$
3.编写USB存储移除脚本
pdsyw@pdsyw1024:~/Desktop$ vim setup-usb-autoremove.sh
pdsyw@pdsyw1024:~/Desktop$
pdsyw@pdsyw1024:~/Desktop$ cat setup-usb-autoremove.sh
#!/bin/bash
# Step 1: 创建自动移除的脚本
cat << 'EOF' | sudo tee /usr/local/bin/remove-usb.sh > /dev/null
#!/bin/bash
# 提取传递的设备节点
device_path="/sys$DEVPATH"
# 查找设备并解除绑定
if [ -e "$device_path/driver/unbind" ]; then
basename $device_path | tee $device_path/driver/unbind
fi
EOF
# 赋予脚本可执行权限
sudo chmod +x /usr/local/bin/remove-usb.sh
# Step 2: 创建 udev 规则
cat << 'EOF' | sudo tee /etc/udev/rules.d/99-usb-autoremove.rules > /dev/null
ACTION=="add", SUBSYSTEMS=="usb", ATTR{bInterfaceClass}=="08", RUN+="/usr/local/bin/remove-usb.sh"
EOF
# Step 3: 重载 udev 规则
udevadm control --reload-rules
pdsyw@pdsyw1024:~/Desktop$
这个脚本的目的是自动设置一个机制,当插入 USB 存储设备时,系统会立即检测并自动移除该设备。脚本通过创建一个自动移除脚本、配置 udev 规则,以及重载规则来实现这个功能。以下是脚本的详细解释:
# Step 1: 创建自动移除的脚本
cat << 'EOF' | sudo tee /usr/local/bin/remove-usb.sh > /dev/null
#!/bin/bash
# 提取传递的设备节点
device_path="/sys$DEVPATH"
# 查找设备并解除绑定
if [ -e "$device_path/driver/unbind" ]; then
basename $device_path | tee $device_path/driver/unbind
fi
EOF
这部分代码会在系统的 /usr/local/bin/ 目录下创建一个名为 remove-usb.sh 的脚本。
脚本中使用 D E V P A T H 环境变量,它会由 u d e v 在 U S B 设备插入时自动传递。 DEVPATH 环境变量,它会由 udev 在 USB 设备插入时自动传递。 DEVPATH环境变量,它会由udev在USB设备插入时自动传递。DEVPATH 是设备路径。
该脚本会查找对应 USB 存储设备的路径并解除绑定(也就是从系统中移除设备)。通过 basename $device_path | tee $device_path/driver/unbind 来执行这个过程,basename 提取设备名,tee 将设备名写入到 unbind 文件以解除绑定。
sudo chmod +x /usr/local/bin/remove-usb.sh
这部分代码将给刚刚创建的 remove-usb.sh 脚本赋予可执行权限,使其能够被 udev 调用并执行。
# Step 2: 创建 udev 规则
cat << 'EOF' | sudo tee /etc/udev/rules.d/99-usb-autoremove.rules > /dev/null
ACTION=="add", SUBSYSTEMS=="usb", ATTR{bInterfaceClass}=="08", RUN+="/usr/local/bin/remove-usb.sh"
EOF
这里会创建一个 udev 规则文件 /etc/udev/rules.d/99-usb-autoremove.rules。
udev 是 Linux 下的设备管理器,它可以检测到设备的插入/移除,并执行相应的操作。
ACTION==“add” 表示规则会在检测到设备插入时触发。
SUBSYSTEMS==“usb” 限定该规则只应用于 USB 设备。
ATTR{bInterfaceClass}==“08” 限定规则只匹配 USB 存储设备(大容量存储类设备,bInterfaceClass 为 08 对应的是大容量存储设备)。
RUN+=“/usr/local/bin/remove-usb.sh” 表示当插入符合条件的设备时,执行前面创建的 remove-usb.sh 脚本。
# Step 3: 重载 udev 规则
sudo udevadm control --reload-rules
这段代码会重载 udev 规则,使新添加的规则立即生效。
udevadm control --reload-rules 是 udev 的管理命令,它会重新读取所有的规则文件,以确保新添加的规则在设备插入时生效。
4.编写USB存储恢复识别脚本
pdsyw@pdsyw1024:~/Desktop$ vim setup-usb-autoadd.sh
pdsyw@pdsyw1024:~/Desktop$
pdsyw@pdsyw1024:~/Desktop$ cat setup-usb-autoadd.sh
#!/bin/bash
# Step 1: 移除脚本
rm -rf /usr/local/bin/remove-usb.sh
# Step 2: 移除 udev 规则
rm -rf /etc/udev/rules.d/99-usb-autoremove.rules
# Step 3: 重载 udev 规则
udevadm control --reload-rules
pdsyw@pdsyw1024:~/Desktop$
这个脚本的作用是清理之前设置的自动移除 USB 设备的机制,具体解释如下:
# Step 1: 移除脚本
rm -rf /usr/local/bin/remove-usb.sh
这部分代码使用 rm -rf 命令删除 /usr/local/bin/ 目录下的 remove-usb.sh 脚本。
remove-usb.sh 是之前创建的用于移除 USB 存储设备的脚本。通过删除它,系统将不再执行该脚本来移除 USB 设备。
# Step 2: 移除 udev 规则
rm -rf /etc/udev/rules.d/99-usb-autoremove.rules
这部分代码删除 /etc/udev/rules.d/ 目录下的 99-usb-autoremove.rules 文件。
这个文件是之前创建的 udev 规则文件,它规定了当插入 USB 存储设备时,系统会执行 remove-usb.sh 脚本。删除该文件后,udev 将不再针对 USB 设备执行移除操作。
# Step 3: 重载 udev 规则
udevadm control --reload-rules
这部分代码使用 udevadm control --reload-rules 命令重载 udev 规则。
这是为了确保删除的 99-usb-autoremove.rules 文件立即生效。如果不重载规则,系统可能仍然会按照旧的规则工作,直到重启或手动重载规则。
5.测试USB存储移除脚本
pdsyw@pdsyw1024:~/Desktop$ sudo bash setup-usb-autoremove.sh
输入密码
pdsyw@pdsyw1024:~/Desktop$
6.插入U盘不识别
7.测试USB存储恢复识别脚本
pdsyw@pdsyw1024:~/Desktop$ sudo bash setup-usb-autoadd.sh
8.插入USB识别
通过本文的介绍,您已经了解了如何在Linux终端下禁用USB存储设备。通过禁用USB存储模块或配置udev规则,可以有效地防止未经授权的USB存储设备接入系统,提升系统的安全性。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和教程。感谢大家的阅读,我们下次再见!