【信创】Linux系统如何配置USB存储禁用及例外 | 统信 | 麒麟 | 方德
gudong366 2025-05-12 12:20 8 浏览
原文链接:【信创】Linux系统如何配置USB存储禁用及例外 | 统信 | 麒麟 | 方德
Hello,大家好啊!今天给大家带来一篇关于如何在Linux系统中配置USB存储禁用及例外的文章。禁用USB存储可以有效防止未经授权的人员从系统中复制数据或注入恶意软件,但有时也需要为特定的设备设置例外,使得某些USB设备依然可以使用。本文将介绍如何禁用USB存储设备,同时为特定设备设置例外规则。欢迎大家分享转发,点个关注和在看吧!
USB存储禁用与例外的需求场景
在企业环境中,禁用USB存储设备是为了提高系统的安全性,防止数据泄露或恶意软件的引入。然而,有些设备,如公司的授权U盘或外接硬盘,可能需要继续使用。因此,系统管理员需要一种方式,既可以全局禁用USB存储设备,又可以允许特定的USB设备继续使用。
1.查看需要例外的USB存储
pdsyw@pdsyw-pc:~/桌面$ lsusb
2.编辑移除USB存储的脚本
pdsyw@pdsyw-pc:~/桌面$ vim setup-usb-autoremove.sh
pdsyw@pdsyw-pc:~/桌面$ 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"
# 查找设备的 idVendor 和 idProduct 文件
while [[ ! -f "$device_path/idVendor" && "$device_path" != "/" ]]; do
device_path=$(dirname "$device_path")
done
# 如果找到了 idVendor 和 idProduct,继续处理
if [[ -f "$device_path/idVendor" && -f "$device_path/idProduct" ]]; then
device_vendor=$(cat $device_path/idVendor)
device_product=$(cat $device_path/idProduct)
# 允许的 USB 设备(替换为你指定的设备信息)
allowed_vendor="2bdf" # 示例: SanDisk厂商ID
allowed_product="0777" # 示例: SanDisk产品ID
# 检查是否为允许的 USB 设备
if [[ "$device_vendor" == "$allowed_vendor" && "$device_product" == "$allowed_product" ]]; then
echo "Allowed USB device detected: Vendor=$device_vendor, Product=$device_product"
else
echo "Non-allowed USB device detected: Vendor=$device_vendor, Product=$device_product. Removing..."
# 查找设备并解除绑定
if [ -e "$device_path/driver/unbind" ]; then
basename $device_path | tee $device_path/driver/unbind
fi
fi
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 规则
sudo udevadm control --reload-rules
pdsyw@pdsyw-pc:~/桌面$
这个脚本的目的是自动移除不被允许的 USB 存储设备,只允许特定的设备连接。以下是脚本中每一行的详细解释:
Step 1: 创建自动移除的脚本
cat << 'EOF' | sudo tee
/usr/local/bin/remove-usb.sh > /dev/null
#!/bin/bash
# 提取传递的设备节点
device_path="/sys$DEVPATH"
这里使用 $DEVPATH 环境变量来获取触发该脚本的 USB 设备路径,/sys 是 Linux 的 sysfs 文件系统,存放着系统硬件信息。
# 查找设备的 idVendor 和 idProduct 文件
while [[ ! -f "$device_path/idVendor" && "$device_path" != "/" ]]; do
device_path=$(dirname "$device_path")
done
这个循环从设备节点开始,逐层向上查找包含 idVendor 和 idProduct 文件的目录,这些文件分别存储着 USB 设备的厂商 ID 和产品 ID。
# 如果找到了 idVendor 和 idProduct,继续处理
if [[ -f "$device_path/idVendor" && -f "$device_path/idProduct" ]]; then
device_vendor=$(cat $device_path/idVendor)
device_product=$(cat $device_path/idProduct)
# 允许的 USB 设备(替换为你指定的设备信息)
allowed_vendor="2bdf" # 示例: SanDisk厂商ID
allowed_product="0777" # 示例: SanDisk产品ID
# 检查是否为允许的 USB 设备
if [[ "$device_vendor" == "$allowed_vendor" && "$device_product" == "$allowed_product" ]]; then
echo "Allowed USB device detected: Vendor=$device_vendor, Product=$device_product"
else
echo "Non-allowed USB device detected: Vendor=$device_vendor, Product=$device_product. Removing..."
# 查找设备并解除绑定
if [ -e "$device_path/driver/unbind" ]; then
basename $device_path | tee $device_path/driver/unbind
fi
fi
fi
EOF
当找到 idVendor 和 idProduct 文件时,继续后续的设备检查操作。读取 idVendor 和 idProduct 文件中的内容,分别获取设备的厂商 ID 和产品 ID。定义允许的 USB 设备厂商 ID 和产品 ID。可以根据需求替换为你想要允许的设备的具体信息。判断该设备是否为允许的设备。如果设备的厂商 ID 和产品 ID 匹配,则输出 "Allowed USB device detected",否则将其判定为不允许的设备并解除设备绑定(通过向 unbind 文件写入设备名称),从而移除设备。
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"
这是 udev 规则的具体内容:
ACTION=="add":该规则在检测到设备添加时执行。
SUBSYSTEMS=="usb":限定规则只针对 USB 设备。
ATTR{bInterfaceClass}=="08":这个属性类代表大容量存储设备(如 USB 闪存、硬盘等)。
RUN+="/usr/local/bin/remove-usb.sh":当条件满足时,运行 /usr/local/bin/remove-usb.sh 脚本。
Step 3: 重载 udev 规则
sudo udevadm control --reload-rules
使用 udevadm 工具重新加载 udev 规则,以便新添加的规则生效。
3.编辑移除上述操作的脚本
pdsyw@pdsyw-pc:~/桌面$ vim setup-usb-autoadd.sh
pdsyw@pdsyw-pc:~/桌面$ 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 规则
sudo udevadm control --reload-rules
pdsyw@pdsyw-pc:~/桌面$
4.测试移除USB存储的命令
pdsyw@pdsyw-pc:~/桌面$ sudo bash setup-usb-autoremove.sh
5.插入例外U盘可以识别
6.插入非例外U盘安全中心放行
7.文件管理器不可识别
8.测试移除USB存储禁用脚本
pdsyw@pdsyw-pc:~/桌面$ sudo bash setup-usb-autoadd.sh
9.例外USB存储识别正常
10.非例外USB存储识别正常
通过本文的介绍,您已经学会了如何在Linux系统上禁用所有USB存储设备,并为特定的设备设置例外规则。通过udev规则,您可以有效地管理USB存储设备的使用权限,既能确保系统的安全性,又能为必要的设备提供灵活的使用权限。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和教程。感谢大家的阅读,我们下次再见!
相关推荐
- U盘文件被删怎么简单恢复(u盘里的文件被误删了怎么找回)
-
现在这个社会不是靠关系靠路子,主要还是靠实力。刘强在机关工作,人长得帅气,工作能力又强。唯独一样不好,脾气太大,动不动就发火,因为小事常和同事发生口角。一次他火大的差点把办公桌给掀翻了,领导见他野蛮的...
- 不小心删除了一些文件?9 个最佳免费硬盘恢复软件
-
恢复您曾经无意或意外删除的所有文件和数据。您是否曾经错误地删除了一个对您的工作至关重要并导致您丢失所有进度的文件?我们为您提供了一些最好的免费硬盘恢复软件,以帮助您恢复意外删除的文件,以解决您的文件删...
- Studio 中文版:数据救援神器,误删 / 分区损坏 / RAID 恢复一键找回
-
Studio中文版:数据救援神器,误删/分区损坏/RAID恢复一键找回当文件意外删除、分区损坏,或RAID阵列崩溃时,一款可靠的数据恢复工具往往能挽回关键损失。R-Studio中文版...
- 你值得拥有的11款Linux数据恢复工具
-
如果你使用的是Linux操作系统,那么你一定想知道一旦硬盘崩溃的话又该如何保存和恢复数据。其实,现在有很多Linux数据恢复工具可以让我们摆脱数据安全的困扰。小编已经为各位准备好了一些最好的Linux...
- 误删文件内容怎么恢复(误删文件内容怎么恢复回来)
-
在日常使用电脑的过程中,误删文件的情况时有发生。无论是由于操作失误还是病毒攻击,误删文件都会给我们带来不小的困扰。幸运的是,随着技术的发展,误删文件恢复已不再是难题。本文将介绍几款国内外知名的误删...
- u盘如何恢复删除的文件?推荐5款u盘数据恢复软件!
-
在日常生活与工作中,U盘作为便捷的数据存储载体,频繁用于传输和保存各类重要文件。然而,误删文件的情况却时有发生,无论是珍贵的照片、重要的工作文档,还是精心制作的视频,一旦删除,都可能带来不小的麻烦。...
- 怎么恢复删除的数据?5种有效的数据恢复方法汇总!
-
在数字化办公与生活的时代,电脑里的每一份数据都承载着重要信息。然而,一个误操作就可能导致数据被删除,无论是尚未保存的重要文档,还是珍藏多年的照片,都可能瞬间“消失”。但其实,数据删除并不意味着永久丢...
- u盘删除文件怎么找回?5个数据恢复工具汇总,助你巧妙恢复数据!
-
在日常使用U盘的过程中,误删文件的情况时有发生,重要的工作文档、珍贵的照片视频一旦消失,难免让人焦急万分。别担心,只要选对数据恢复工具,被删除的数据仍有找回的可能。下面就为你汇总5款实用的数据...
- Linux下恢复误删文件:思路+实践(linux删除如何恢复)
-
周五篮球群里有人问误删文件了怎么恢复,得知是ext4文件系统之后我推荐了ext4magic这个工具,然后又有人提到了xfs的话怎么办,正好前几天看到DaveChinner在邮件列表里提到了这个问题,...
- 苹果放大招!不用虚拟机了,Mac直接跑Linux容器,开发者效率翻倍
-
苹果这次真给开发者送福利了!今天凌晨(6月10日),苹果在官宣的Containerization框架直接炸了技术圈——Mac现在能原生运行Linux容器镜像了!这可不是虚拟机那种“套娃”方案,而是基...
- 7 款老牌经典软件,值得收藏(经典老歌软件)
-
Calibrehttps://calibre-ebook.com/Calibre是一个电脑电子书管理软件。肯定有人说了,电子书还要管理?那当然了。它的功能更强大的让你想象不到,首先它可以导入PDF,...
- 神仙级的免费开源电子书阅读器,还支持听书功能
-
神仙级的免费开源电子书阅读器,还支持听书功能,极空间部署『KoodoReader』哈喽小伙伴们好,我是Stark-C~前段时间不是给大家分享的电子书管理工具『TaleBook』嘛~,然后就有粉丝私信...
- 如何在Ubuntu系统中重置root密码(ubuntu忘记密码重置root密码命令)
-
很多人有个问题,就是喜欢把密码设置得很长很复杂,结果谁也没防住,却成功防住了自己ヽ(.ˇдˇ;)ノ对于现代人,特别是年轻人,都有过忘记密码的经历吧。在这篇文章中,我们来了解如何在Ubuntu1...
- 5款功能强大的PDF阅读器,让PDF阅读更轻松
-
分享5款功能强大的PDF阅读器,拥有丰富的PDF阅读工具,支持PDF文档划线、笔记、标记等操作,让PDF阅读更轻松!1.嗨动PDF编辑器一款实用的PDF处理软件,不仅可以阅读PDF文档,还能直接编辑、...
- 上班摸鱼利器! 免费好用的电子书阅读器,NAS轻松部署Koodo Reader
-
哈喽,大家好我是生活爱好者。笔者也是一名小说爱好者,平时用手机用某信读书,会员也开了,在家看体验也不错,但是上班的时候,在工作快速完成之后,想摸个鱼用手机就不太方便啦,作为爱折腾的人,必须要工作认真,...
- 一周热门
- 最近发表
- 标签列表
-
- linux一键安装 (31)
- linux运行java (33)
- ln linux (27)
- linux 磁盘管理 (31)
- linux 内核升级 (30)
- linux 运行python (28)
- linux 备份文件 (30)
- linux 网络测试 (30)
- linux 网关配置 (31)
- linux jre (32)
- linux 杀毒软件 (32)
- linux语法 (33)
- linux博客 (33)
- linux 压缩目录 (37)
- linux 查看任务 (32)
- 制作linux启动u盘 (35)
- linux 查看存储 (29)
- linux乌班图 (31)
- linux挂载镜像 (31)
- linux 软件源 (28)
- linux题目 (30)
- linux 定时脚本 (30)
- linux 网站搭建 (28)
- linux 远程控制 (34)
- linux bind (31)