【信创】Linux终端禁用USB存储 _ 统信 _ 麒麟 _ 方德

news2024/11/15 10:15:50

原文链接:【信创】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环境变量,它会由udevUSB设备插入时自动传递。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存储设备接入系统,提升系统的安全性。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和教程。感谢大家的阅读,我们下次再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2117416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware Fusion 13.6 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式

VMware Fusion 13.6 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式 VMware Fusion 13 原版 App 中集成 OEM BIOS 请访问原文链接&#xff1a;https://sysin.cn/blog/vmware-fusion-13-oem/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

中国家庭收入调查(CHIP)数据合集(1988-2018年)

中国家庭收入调查&#xff08;CHIP&#xff09;是一项重要的社会学研究资源&#xff0c;它通过入户调查的方式收集了包含家庭收支信息以及其他相关的家庭和个人信息。CHIP数据合集涵盖了多个年份&#xff0c;包括2018、2013、2008、2007、2002、1999、1995、1988年&#xff0c;…

词嵌入(一):基于矩阵分解的静态词嵌入(VSM、TF-IDF、SVD)

文章目录 一、从几种直观思路的不足谈到理想的Word Representation1.1 独热编码1.2 共现矩阵1.3 理想的Word Representation应当满足的要求 二、静态词嵌入与动态词嵌入三、基于矩阵分解的静态词嵌入3.1 Distributional Hypothesis3.2 向量空间模型&#xff08;Vector Space Mo…

【详解】网络隔离环境下,跨网文件交换存在的核心问题及解决方法

一、为什么要进行网络隔离&#xff1f; 随着互联网技术的发展和推进&#xff0c;人们对于网络使用的场景也越来越多元化&#xff0c;而网络黑客入侵、病毒攻击、网络泄密等安全事件的不断发生&#xff0c;也让人们认识到网络安全的重要性。企业、社会、国家机构在日常经营管理…

基于Pytorch框架的深度学习U2Net网络精细天空分割系统源码

第一步&#xff1a;准备数据 头发分割数据&#xff0c;总共有10276张图片&#xff0c;里面的像素值为0和1&#xff0c;所以看起来全部是黑的&#xff0c;不影响使用 第二步&#xff1a;搭建模型 级联模式 通常多个类似U-Net按顺序堆叠&#xff0c;以建立级联模型&#xff0c…

STM32(十二):DMA直接存储器存取

DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源。&#xff08;运行内存SRAM、程序存储器Flash、寄存器&#xff09; 12个独立可配置的通道&…

【stata】自写命令分享twfe_stgdid,一键完成staggered-DID

1. 命令简介 仿照CSDID命令一键出实证结果、出图&#xff0c;我写了一个twfe_stgdid命令。基于双向固定效应模型&#xff08;TWFE&#xff09;一键式完成staggered-DID分析。TWFE估计did estimator时难以避免负权重带来的问题&#xff08;异质性处理效应&#xff09;。所以&am…

C++11新特性——右值引用与移动语义

左值引用和右值引用 在C中&#xff0c;左值是一个表示数据的表达式&#xff0c;我们可以获取它的地址&#xff0c;一般可以对它赋值&#xff0c;通常可以出现在左边或右边&#xff0c;左值引用就是对左值的引用&#xff0c;相当于给左值起了一个别名。 例子&#xff1a; int …

macOS安装Java和Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本&#xff0c;注意这里我们要下载的是Java8&#xff0c;对应的JDK1.8 需要登陆Oracle&#xff0c;没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…

Autosar--Can收发器通俗讲解

Autosar网络管理的休眠唤醒功能,Can收发器起到比较大的作用,充当唤醒源以及最终执行网络休眠。 Autosar--Can收发器通俗讲解 唤醒/休眠请求 进入normol ComM_EcuM_WakeUpIndication 有唤醒源事件 CanSM_RequestComMode 有通信请求 CanSM_NetworkStatemachine() 更新CANS…

【C++】list(下)

个人主页~ list&#xff08;上&#xff09;~ list 四、模拟实现1、list.h&#xff08;1&#xff09;关于整个list的搭建①节点②迭代器③接口 &#xff08;2&#xff09;自定义类型实例化 2、test.cpp&#xff08;1&#xff09;test1&#xff08;2&#xff09;test2 五、额外小…

大模型入门 ch02:数据集准备

本文是github上的大模型教程LLMs-from-scratch的学习笔记&#xff0c;教程地址&#xff1a;教程链接 Chapter 2&#xff1a; Working with Text 这一章节包括了数据的准备和采样阶段。 1. Tokenizer 大模型通过将token转变为embedding&#xff08;词嵌入&#xff09;运作。 首…

【机器学习】高斯网络的基本概念和应用领域以及在python中的实例

引言 高斯网络&#xff08;Gaussian Network&#xff09;通常指的是一个概率图模型&#xff0c;其中所有的随机变量&#xff08;或节点&#xff09;都遵循高斯分布 文章目录 引言一、高斯网络&#xff08;Gaussian Network&#xff09;1.1 高斯过程&#xff08;Gaussian Proces…

Android14音频进阶之高通Elite架构指定通道播放(八十四)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

【Linux】多线程:线程概念,线程与进程的区别与联系,多线程相较于多进程的优势

目录 一、进程基本属性回顾 二、线程概念 三、操作系统为什么要引入线程—多进程和多线程的区别 为什么多线程比多线程调度效率更快&#xff1f; 四、线程的优点 五、线程的缺点 六、线程异常 一、进程基本属性回顾 在学习线程之前&#xff0c;我们先来回顾一下进程的基…

6. LinkedList与链表

一、ArrayList的缺陷 通过源码知道&#xff0c;ArrayList底层使用数组来存储元素&#xff0c;由于其底层是一段连续空间&#xff0c;当在ArrayList任意位置插入或者删除元素时&#xff0c;就需要将后序元素整体往前或者往后搬移&#xff0c;时间复杂度为O(n)&#xff0c;效率比…

64、Python之函数高级:装饰器实战,动态语言也能有类型检查

引言 Python作为一门动态类型语言&#xff0c;有时候&#xff0c;一个不小心的类型错误只有在实际运行中才有可能被发现。相较而言&#xff0c;静态类型语音虽然不够灵活&#xff0c;但是&#xff0c;类型错误等语法检查在编译期间就可以提前发现了。 那么我们有没有方法在Py…

Visual Studio Code 月刊 (2024-08)

文章目录 配置文件编辑器Django 单元测试支持vscode.dev 上的 IntelliSenseNotebook 差异查看器通过键盘调整列的大小源代码管理图GitHub Copilot结语 2024 年 8 月 Visual Studio Code&#xff08;简称 vscode&#xff09;发布了 version 1.93。该版本带来了许多更新&#xff…

Spring Boot Admin集成与自定义监控告警

目录 一.Spring Boot Admin集成 1.引入依赖 2.添加配置 3.监控界面 二.Spring Boot Admin告警机制 1. 基本告警机制 2. 配置告警 2.1 triggers触发器讲解 3. 自定义通知 3.1 Instance 对象 三.Spring Boot Admin支持的监控属性 1.常见的Spring Boot Admin监控属性 …

进阶SpringBoot之配置 Swagger API 框架信息

Swagger&#xff1a;API 框架 RestFul API 文档在线自动生成工具&#xff0c;API 文档与 API 定义同步更新 Swagger 官网 Maven 仓库 创建 Spring Boot 项目&#xff0c;依赖勾选 Spring Web pom.xml 导入相关依赖&#xff1a; springfox-swagger2、springfox-swagger-ui …