【信创】Linux终端禁用USB存储 _ 统信 _ 麒麟 _ 方德
原文链接:【信创】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 asimdhpcpuid 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" ]; thenbasename $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" ]; thenbasename $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存储设备接入系统,提升系统的安全性。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和教程。感谢大家的阅读,我们下次再见!
相关文章:
【信创】Linux终端禁用USB存储 _ 统信 _ 麒麟 _ 方德
原文链接:【信创】Linux终端禁用USB存储 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天给大家带来一篇关于在Linux终端下禁用USB存储设备的文章。禁用USB存储设备可以提高系统的安全性,防止未经授权的人员将数据拷贝到外部存储设备或…...
开放API接口时要注意的安全处理总结
开发API接口:开放给别人调用的接口。未经过安全处理的开发API接口安全弱点:数据窃取(密码等信息被窃取,盗刷,敏感信息的等)——RSA/DES加密: 签名机制在API接口中的应用:签名用于验证…...
FastGPT自定义插件的icon
最近研究FastGPT的自定义插件,经过好几天的折磨,终于实现了一个简单的发送邮件功能,但是呢在使用的时候发现插件的icon是默认的fastgpt的logo,那肯定得自定义一个啊。直接说方法: 1、自定义插件下面的template.json文件…...
SprinBoot+Vue旅游网站的设计与实现
目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…...
代码随想录刷题day27丨455.分发饼干 ,376. 摆动序列 ,53. 最大子序和
代码随想录刷题day27丨455.分发饼干 ,376. 摆动序列 ,53. 最大子序和 1.贪心算法理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张&a…...
Detect It Easy
Detect It Easy(简称 DIE)项目的网址为 https://github.com/horsicq/Detect-It-Easy 下载完安装包后,直接双击die.exe即可进入到操作界面 工具介绍: 它可以用来检测程序架构和文件类型。如图所示。其中,「模式」说明程…...
c++开关灯
题目描述 现有 𝑛n 盏灯排成一排,从左到右依次编号为:11,22,……,𝑛n。然后依次执行 𝑚m 项操作。 操作分为两种: 指定一个区间 [𝑎,𝑏][a,b]&…...
DevOps实现CI/CD实战(六)- Jenkins集成k8s
十、 Jenkins集成k8s Jenkins在集成K8s之前,需要搭建k8s集群,具体搭建步骤,完整笔记 https://github.com/ITenderL/ITenderL.github.io/tree/main/docs/DevOps, 包括完整的DevOps的笔记。 1. 准备部署的yml文件 pipeline.yml …...
张雪峰:物联网行业迎高光时刻!如何选择?我们诚聘销售工程师!
作为一间10多年的物联网公司,各位求职人士可以看看我们其中一个招聘要求,和自己需求结合分析分析,希望对你们有所帮助。 【公司实力底蕴】 盈电智控物联网科技(广东)有限公司,2024年7月成立,是…...
利用多文件编程实现顺序表的创建,判满,插入,输出
文章目录 🍊自我介绍🍊利用多文件编程实现顺序表的创建,判满,插入,输出seqlist.cseqlist.hmain.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连ÿ…...
百度快照劫持之JS劫持诊断与恢复一例
劫持现象: 百度搜索结果中,被劫持网站出现在搜索结果中, 点击进入网站,网站显示正常,数秒后网站自动跳转到彩票网站f51688.com/ff6/。但是第二次点击搜索结果,正常进入网站缺不会跳转到彩票网站。 初步认…...
深入探讨Go语言中的切片与数组操作
在编程世界中,数组一直是非常流行的数据结构,主要有两个原因:其一是简单易懂,其二是非常灵活,可以存储多种不同类型的数据。在Go语言中,数组的用法有其独特的特点,但与此同时,Go语言…...
【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题
WPS表格 2019版本 升级到 WPS最新版 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 使用最新版就能够解决这个问题,如果仍旧无法解决可以勾选如下配置 重启Excel解决。 请勾选:文件 - 选项 - 编辑 - 不提示且不压缩文件中的图像...
驱动(RK3588S)第九课时:多节点驱动与函数接口
目录 一、多节点概念1、所用到的结构体说明2、函数接口主要是read和write函数2.1、把应用层的数据拷贝给底层2.2、把应用层的数据拷贝给底层 3、应用层的read和write函数4、底层的read和write函数二、ioctl控制命令接口1、概念2、函数介绍应用层和驱动层 三、代码与现象1.编写L…...
Linux系统下配置MySQL
1. 寻找MySQL的配置文件 MySQL的配置文件通常位于以下位置: 在大多数Linux系统上,主配置文件通常位于/etc/mysql/my.cnf或/etc/my.cnf。在macOS上,如果你使用Homebrew安装MySQL,配置文件通常位于/usr/local/etc/my.cnf。在Window…...
信捷 XD PLC POU编程之FB
在使用信捷的POU方式编程,可以建立两种POU:FB和FC。 FB和FC这两种POU又各自可以建立梯形图语言POU和C语言POU。 函数块(FB)是把反复使用的部分程序块转换成一种通用部件,他可以在程序中反复被调用,不仅 提高了程序的开…...
终于有人把云计算、大数据和人工智能讲明白了!
引言 在当今数字化时代,云计算、大数据和人工智能成为了全球科技界的热门话题。这些技术的迅猛发展以及应用范围的不断扩大,正深刻地改变着我们的生活和工作方式。云计算为我们提供了有效的计算和存储能力,大数据则以海量的信息资源为基础&a…...
【编程底层思考】详解Java内存模型(JMM)原理及其作用
Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)的一个核心概念,它定义了Java程序中各种变量(线程共享变量)的访问规则,以及在并发环境下,为了确保数据的可见性、…...
Docker的基本概念和优势
Docker是一个开源的容器化平台,它可以将应用程序及其所有依赖项和运行环境打包到一个称为容器的独立单元中。容器化使得应用程序在不同的环境中可以以相同的方式运行,并且更加轻量级和可移植。 Docker的基本概念包括以下几点: 镜像…...
数据结构————内核链表
内核链表是Linux内核中广泛使用的一种数据结构,它具有以下特点: 1.双向循环链表:每个节点包含两个指针,一个指向前驱节点(prev),另一个指向后继节点(next),…...
保姆级教程:用Python+Plotly可视化分析ROS机器人地图分区算法(附代码)
从零实现ROS地图分水岭算法:PythonPlotly动态可视化实战当你第一次看到机器人构建的二维栅格地图时,那些黑白相间的像素块可能只是冰冷的数字矩阵。但在地图分区算法的视角下,每个像素的高度值都代表着"水位"的涨落,而整…...
机器学习势函数在高压氢模拟中的基准测试与实战指南
1. 项目概述与背景高压氢的研究,尤其是其液-液相变行为,一直是凝聚态物理和行星科学领域的前沿课题。理解氢在极端条件下的物态,对于揭示巨行星内部结构、探索新型超导材料乃至惯性约束聚变等应用都至关重要。然而,传统的模拟方法…...
别再到处找教程了!保姆级VMware Workstation 17 Pro安装CentOS 7图文指南(含阿里云镜像下载)
2024最新版VMware Workstation Pro 17与CentOS 7实战安装全攻略对于开发者而言,拥有一个稳定、高效的Linux开发环境至关重要。CentOS 7作为企业级Linux发行版,以其卓越的稳定性和广泛的软件支持成为众多开发者的首选。而VMware Workstation Pro 17则提供…...
C#直连Tesseract C++原生API实战指南
1. 为什么C#开发者要绕开NuGet包,直连Tesseract C原生API?“C#也能玩转OCR?”——这句话在.NET生态里常被当成一句调侃。多数人点开Visual Studio,搜tesseract,顺手装个Tesseract或Tesseract.NETNuGet包,写…...
LiDAR增强信道估计:融合几何感知提升毫米波MIMO-OFDM系统性能
1. 项目概述与核心思路在毫米波大规模MIMO-OFDM系统中,尤其是在车联网这类高动态、低时延的应用场景里,获取精确的信道状态信息(CSI)是保障通信可靠性与高效性的基石。传统的信道估计方法,无论是基于最小二乘ÿ…...
机器人数据采集路径优化:用最近邻算法高效求解高维相空间TSP
1. 项目概述与核心问题在机器人控制,尤其是对精度要求极高的领域,比如手术机器人,我们常常面临一个看似简单实则棘手的问题:如何让机器人高效地完成一系列指定动作,以收集用于训练机器学习模型的数据。这听起来像是“让…...
ET框架:Unity游戏服务端的工业级架构实践
1. 这不是又一个“Unity做服务器”的噱头,而是把游戏服务端从“能跑”推进到“可维、可扩、可测”的分水岭“ET框架革命:Unity游戏服务器开发的终极解决方案”——这个标题里,“革命”二字不是修辞,是实打实的工程范式切换&#x…...
Dingo-BNS:基于神经后验估计的亚秒级引力波参数推断框架
1. 项目概述:当引力波遇见神经网络引力波天文学正处在一个激动人心的时代。自2015年首次直接探测到引力波以来,我们不仅“听”到了黑洞并合的宇宙巨响,也捕捉到了双中子星并合产生的时空涟漪,开启了多信使天文学的新纪元。然而&am…...
从矩阵分解到聚类:构建可评估电影推荐系统的实战指南
1. 项目概述:从零构建一个可评估的推荐引擎 做推荐系统这些年,我最大的感受是:理论模型千千万,但真正决定项目成败的,往往不是选择了最前沿的算法,而是对基础模型深刻的理解、扎实的工程实现,以…...
软考软件设计师每日备考资料 2026年5月16日(周六) | 距考试仅剩7天(5月23-26日)**
📚 软考软件设计师每日备考资料📅 2026年5月16日(周六) | 距考试仅剩7天(5月23-26日) 🎯 今日主题:考前7天全真模拟卷 答题节奏训练 新考纲AI终极速记 考前一周冲刺计划一、&…...
