使用LUKS对Linux磁盘进行加密
前言
本实验用于日常学习用,如需对存有重要数据的磁盘进行操作,请做好数据备份工作。 此实验只是使用LUKS工具的冰山一角,后续还会有更多功能等待探索。
LUKS(Linux Unified Key Setup)是Linux系统中用于磁盘加密的一种机制,它为磁盘分区提供了强大的加密保护。
加密卷:LUKS通过创建一个加密的“加密卷”,这个卷在磁盘上表现为一个分区或整个磁盘。
密钥槽:每个LUKS加密卷可以包含多个密钥槽,每个槽可以存储一个不同的密钥,用于解密加密卷。
主密钥:LUKS使用一个主密钥来加密和解密这些密钥槽中的密钥。
LUKS为Linux系统提供了一种强大且灵活的磁盘加密解决方案,通过创建加密卷和使用密钥槽来保护数据安全。它在全磁盘加密、分区加密和容器加密等多种场景下都有广泛应用。
LUKS工具,不是LUSK工具。
基本步骤
本次实验的操作系统为Redhat8
1、查看是否安装了LUKS软件包
rpm -qf /sbin/cryptsetup

2、 查看当前磁盘及分区
fdisk -l

3、添加新磁盘
关闭虚拟机,再VMware工作台给虚拟机添加一个新硬盘
对硬盘的相关操作,可以参考这篇文章:
Linux——【磁盘管理和LVM卷组管理】



4、对新硬盘进行加密
对/dev/nvme0n2 进行加密
cryptsetup luksFormat /dev/nvme0n2

5、对解锁的硬盘映射
cryptsetup luksOpen /dev/nvme0n2 dly

6、查看映射情况
ll /dev/mapper/dly

• lrwxrwxrwx. 1 root root 7 Nov 24 02:07 /dev/mapper/dly -> …/dm-2
l 表示这是一个符号链接。
rwxrwxrwx 表示所有用户都有读、写和执行权限。
1 表示链接数(硬链接数量)。
root root 表示所有者是 root 用户和 root 组。
7 表示符号链接本身占用的字节数。
Nov 24 02:07 表示最后修改时间。
/dev/mapper/dly -> …/dm-2 表示这个符号链接指向的目标路径是 …/dm-2,即 /dev/dm-2。
设备映射器(Device Mapper):
• /dev/mapper/ 目录下的文件通常与 Linux 的设备映射器框架相关,它允许将物理块设备映射到逻辑卷管理器(如 LVM)或加密设备等。
• dm-2 是一个由设备映射器创建的逻辑设备名。
7、将磁盘格式话未ext4模式
mkfs.ext4 /dev/mapper/dly

8、创建磁盘挂载点,并挂载磁盘,查看文件系统的使用情况
//创建挂载目录
mkdir /mnt/luks
//进行磁盘挂载
mount /dev/mapper/dly /mnt/luks/
//查看各文件系统情况
df -h


9、配置文件,设置硬盘加密自启
该文件用于开机自动挂载
/etc/fstab 文件用于
定义系统启动时自动挂载的文件系统,通过正确配置该文件,可以实现文件系统的自动化管理和挂载。
文件中的字段
<file system> <mount point> <type> <options> <dump> <pass><file system>:设备名或UUID,可以是实际的设备路径(如 /dev/sda1)或UUID(如 UUID=xxxxx)。
<mount point>:挂载点,即文件系统将被挂载到的位置(如 /, /home, /mnt/data)。
<type>:文件系统类型(如 ext4, xfs, vfat, ntfs 等)。
<options>:挂载选项,可以包含多个选项,用逗号分隔(如 defaults, noatime, noexec 等)。
<dump>:备份工具使用的字段,通常设置为 0,表示不进行备份。
<pass>:fsck工具使用的字段,用于确定文件系统检查的顺序。根文件系统通常设置为 1,其他文件系统可以设置为 2 或其他值。
进入配置文件
vi /etc/fstab

10、在/etc/crypttab生成虚拟设备文件
该文件可以实现加密卷的自动化管理和挂载
/etc/crypttab 文件在 Linux 系统中用于
配置加密卷的自动解密。当系统启动时,根据这个文件中的配置,可以自动解密指定的加密卷,并将其挂载到指定的位置。这对于需要自动加载加密卷的场景非常有用,例如在系统启动时自动挂载加密的根文件系统或数据分区。
vi /etc/crypttab

11、重启设备,验证是否加密成功

12、关闭加密
先卸载挂载点,再锁定分区
//卸载挂载点(一定不要打错挂载点!!!)
umount /mnt/luks
//关闭对磁盘的加密
cryptsetup luksClose dly
//查看是否完成加密关闭
ll /dev/mapper/dly

此时再重启,应该不会出现输入磁盘加密密码的情况,但是我重启后不仅需要输入加密密码,还进入了紧急模式。。。

细心的朋友可能会发现我在最后一步,==卸载挂载点的时候打错了卸载点,导致我再次进入Redhat时,被强制进入了紧急模式。==主要原因就是磁盘找不到挂载点,导致磁盘分区错误。以下是本次解决方法。
错误原因:

问题解决
1、强制模式下,进入/etc/fstab 这个配置文件,将之前写入的磁盘加密自启信息注释或删掉(在此之前我在“编辑虚拟机”中,将之前加密的磁盘移除了,不过就算你没有移除磁盘,也是可以进行接下来的操作)
vi /etc/fstab

2、保存退出后重新加载文件使其生效
systemctl daemon-reload
然后重启
reboot
此时开机发现系统依然让我们输入磁盘加密信息,正常输入即可,输入完成后按回车键发现能够正常进入系统啦!(之前是输入密码后会进入紧急模式)

至此,紧急模式的问题我们已经解决。
由于我的粗心,导致在卸载错误挂载点,因此我需要重新卸载

进入/etc/crypttab 文件中,将之前写入的信息注释或删除
vi /etc/crypttab

重启后发现可以直接输入账户密码进入Redhat,不需要再输入磁盘加密密码啦!

然后查看当前的硬盘及分区状况,发现之前对加密的分区还在。

问题解决!
总结
以上就是使用LUKS对Linux磁盘加密的过程,最后出现一点小插曲,挂载点和映射文件一定不要打错!在面对突发问题时,冷静时最好的办法,不妨回过头来理一遍思路,弄清楚每个文件的作用,可能会有意外的收获!
问题解决参考链接:【RedHat】重启服务器进入了emergency mode紧急状态——UUID不匹配
相关文章:
使用LUKS对Linux磁盘进行加密
前言 本实验用于日常学习用,如需对存有重要数据的磁盘进行操作,请做好数据备份工作。 此实验只是使用LUKS工具的冰山一角,后续还会有更多功能等待探索。 LUKS(Linux Unified Key Setup)是Linux系统中用于磁盘加密的一…...
戴尔电脑安装centos7系统遇到的问题
1,找不到启动盘(Operation System Loader signature found in SecureBoot exclusion database(‘dbx’).All bootable devices failed secure Boot Verification) 关闭 Secure Boot(推荐): 进入 BIOS/UEFI…...
3.4.SynchronousMethodHandler组件之ResponseHandler
前言 feign发送完请求后, 拿到返回结果, 那么这个返回结果肯定是需要经过框架进一步处理然后再返回到调用者的, 其中ResponseHandler就是用来处理这个返回结果的, 这也是符合正常思维的处理方式, 例如springmvc部分在调用在controller端点前后都会增加扩展点。 从图中可以看得…...
Linux 下进程的状态
操作系统中常见进程状态 在操作系统中有六种常见进程状态: 新建状态: 进程正在被创建. 此时操作系统会为进程分配资源, 如: 内存空间等, 进行初始化就绪状态: 进程已经准备好运行了, 只需要等待被调度, 获取 CPU 资源就可以执行了, 操作系统中可能同时存在多个进程处于就绪状…...
【计算机网络】核心部分复习
目录 交换机 v.s. 路由器OSI七层更实用的TCP/IP四层TCPUDP 交换机 v.s. 路由器 交换机-MAC地址 链接设备和设备 路由器- IP地址 链接局域网和局域网 OSI七层 物理层:传输设备。原始电信号比特流。数据链路层:代表是交换机。物理地址寻址,交…...
Spring Boot开发实战:从入门到构建高效应用
Spring Boot 是 Java 开发者构建微服务、Web 应用和后端服务的首选框架之一。其凭借开箱即用的特性、大量的自动化配置和灵活的扩展性,极大简化了开发流程。本文将以实战为核心,从基础到高级,全面探讨 Spring Boot 的应用开发。 一、Spring B…...
pyshark安装使用,ubuntu:20.04
1.容器创建 命令 docker run -d --name pyshark -v D:\src:/root/share ubuntu:2004 /bin/bash -c "while true;do sleep 1000;done" 用于创建并启动一个新的 Docker 容器。 docker run -d --name pyshark -v D:\src:/root/share ubuntu:2004 /bin/bash -c "w…...
基本功能实现
目录 1、环境搭建 2、按键控制灯&电机 LED 电机 垂直按键(机械按键) 3、串口调试功能 4、定时器延时和定时器中断 5、振动强弱调节 6、万年历 7、五方向按键 1、原理及分析 2、程序设计 1、环境搭建 需求: 搭建一个STM32F411CEU6工程 分析: C / C 宏定义栏…...
《那个让服务器“跳舞”的bug》
在程序的世界里,bug 就像隐藏在暗处的小怪兽,时不时跳出来捣乱。而在我的职业生涯中,有一个bug让我至今难忘,它不仅让项目差点夭折,还让我熬了无数个通宵。这个故事发生在一个风和日丽的下午,我们正在开发一…...
Python 网络爬虫进阶:动态网页爬取与反爬机制应对
在上一篇文章中,我们学习了如何使用 Python 构建一个基本的网络爬虫。然而,在实际应用中,许多网站使用动态内容加载或实现反爬机制来阻止未经授权的抓取。因此,本篇文章将深入探讨以下进阶主题: 如何处理动态加载的网…...
创建可直接用 root 用户 ssh 登陆的 Docker 镜像
有时候我们在 Mac OS X 或 Windows 平台下需要开发以 Linux 为运行时的应用,IDE 或可直接使用 Docker 容器,或 SSH 远程连接。本地命令行下操作虽然可以用 docker exec 连接正在运行的容器,但 IDE 远程连接的话 SSH 总是一种较为通用的连接方…...
wordpress 中添加图片放大功能
功能描述 使用 Fancybox 实现图片放大和灯箱效果。自动为文章内容中的图片添加链接,使其支持 Fancybox。修改了 header.php 和 footer.php 以引入必要的 CSS 和 JS 文件。在 functions.php 中通过过滤器自动为图片添加 data-fancybox 属性。 最终代码 1. 修改 hea…...
数据结构 (7)线性表的链式存储
前言 线性表是一种基本的数据结构,用于存储线性序列的元素。线性表的存储方式主要有两种:顺序存储和链式存储。链式存储,即链表,是一种非常灵活和高效的存储方式,特别适用于需要频繁插入和删除操作的场景。 链表的基本…...
库的操作.
创建、删除数据库 创建语法: CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项,IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库,假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...
Vue进阶之Vue CLI服务—@vue/cli-service Vuex
Vue CLI服务—vue/cli-service & Vuex vue/cli-service初识bin/vue-cli-service.js代码执行解读 Vuexgenerator/index.jsstore/index.js插件化的能力怎么引入呢? vue/cli-service 初识 第一块是上一个讲述的cli是把我们代码的配置项,各种各样的插件…...
导入100道注会cpa题的方法,导入试题,自己刷题
一、问题描述 复习备考的小伙伴们,往往希望能够利用零碎的时间和手上的试题,来复习和备考 用一个能够导入自己试题的刷题工具,既能加强练习又能利用好零碎时间,是一个不错的解决方案 目前市面上刷题工具存下这些问题 1、要收费…...
数据库操作、锁特性
1. DML、DDL和DQL是数据库操作语言的三种主要类型 1.1 DML(Data Manipulation Language)数据操纵语言 DML是用于检索、插入、更新和删除数据库中数据的SQL语句。 主要的DML语句包括: SELECT:用于查询数据库中的数据。 INSERT&a…...
学习笔记039——SpringBoot整合Redis
文章目录 1、Redis 基本操作Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库添加数据/修改数据查询数据批量添加批量查询删除数据查询所有的 key清除当前数据库清除所有数据库查看 key 是否存在设置有效期查看有效期 2、Redis 数据类型String追加字…...
(笔记)简单了解ZYNQ
1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…...
大众点评小程序mtgsig1.2算法
测试效果: var e function _typeof(o) {return "function" typeof Symbol && "symbol" typeof Symbol.iterator? function (o) {return typeof o;}: function (o) {return o && "function" typeof Symbol &…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
