在开始操作之前,请确保你拥有一台运行Linux(Ubuntu 20.04/22.04或CentOS 7/8)的服务器或本地计算机,并且拥有一块未挂载或数据可被覆盖的独立磁盘(本指南中以/dev/sdb为例)。操作将清空该磁盘上的所有数据,请务必提前确认磁盘设备名称无误。
LUKS(Linux Unified Key Setup)是Linux标准的磁盘加密规范。我们需要使用cryptsetup工具来完成所有操作。更新软件源并安装该工具:
对于基于Debian/Ubuntu的系统,请执行以下命令:
```bash sudo apt-get update sudo apt-get install -y cryptsetup ```对于基于RHEL/CentOS的系统,请执行以下命令:
```bash sudo yum install -y cryptsetup ```安装完成后,使用以下命令检查内核是否支持dm_crypt模块:
```bash sudo modprobe dm_crypt lsmod | grep dm_crypt ```如果输出包含dm_crypt相关信息,说明环境准备就绪。
在进行加密之前,通常需要先对磁盘进行分区。虽然可以直接加密整块原始磁盘,但创建分区是更规范的做法。这里使用fdisk工具对/dev/sdb进行分区:
进入交互界面后,按照以下步骤输入按键(注意:输入字母后按回车确认):
此时,系统已经识别出/dev/sdb1分区。我们可以使用lsblk命令查看:
接下来是核心步骤:使用LUKS对分区/dev/sdb1进行加密格式化。此步骤将设置加密密码,该密码是解密数据的唯一钥匙,请务必牢记。
执行以下命令:
```bash sudo cryptsetup -y -v luksFormat /dev/sdb1 ```参数详解:
-y:要求输入两次密码以验证一致性,防止手误。-v:显示详细操作过程。luksFormat:指定动作是对设备进行LUKS格式化。执行命令后,系统会提示WARNING!,要求输入大写的YES确认操作,然后输入密码。请输入高强度密码(建议包含大小写字母、数字及特殊符号,长度至少16位)。输入完成后,工具会显示加密算法(默认为aes-xts-plain64)和密钥长度等信息。
为了验证加密是否成功,可以使用以下命令查看LUKS头信息:
```bash sudo cryptsetup luksDump /dev/sdb1 ```加密后的分区不能直接存储文件,需要先将其“打开”(映射)为一个虚拟块设备。我们可以将/dev/sdb1映射为/dev/mapper/secure_data。
执行映射命令:
```bash sudo cryptsetup luksOpen /dev/sdb1 secure_data ```系统会提示输入之前设置的LUKS密码。验证成功后,映射设备/dev/mapper/secure_data即被创建。你可以通过ls -l /dev/mapper/查看。
现在,我们需要在这个映射设备上创建文件系统(例如ext4)。注意:文件系统是建立在解密后的透明层之上的。
```bash sudo mkfs.ext4 /dev/mapper/secure_data ```该过程会格式化虚拟设备,输出格式化进度。完成后,该设备就可以像普通分区一样被挂载使用了。
创建挂载点目录并将加密盘挂载:
```bash sudo mkdir -p /mnt/secure_data sudo mount /dev/mapper/secure_data /mnt/secure_data ```使用df -h命令可以看到/mnt/secure_data已成功挂载。此时,写入/mnt/secure_data的任何数据都会在底层被实时加密存储。

为了方便当前用户读写,建议修改目录所有者(将your_username替换为实际用户名):
让我们进行一次简单的读写测试:
```bash echo "This is a top secret file." | sudo tee /mnt/secure_data/secret.txt cat /mnt/secure_data/secret.txt ```如果能够正常读取内容,说明加密卷工作正常。
默认情况下,重启后映射关系会丢失,需要手动输入密码挂载。如果需要开机自动挂载,需要配置/etc/crypttab和/etc/fstab。由于这涉及将密码存储在服务器上(通常不推荐生产环境这样做,除非有TPM芯片),这里介绍手动输入密码开机挂载的标准配置方法。
获取分区的UUID(使用UUID比设备名更稳定):
```bash sudo blkid /dev/sdb1 ```输出类似:/dev/sdb1: UUID="xxxx-xxxx" TYPE="crypto_LUKS"。记下这个UUID。
编辑/etc/crypttab文件:
在文件末尾添加以下内容(字段之间用Tab或空格分隔):
```text secure_data UUID=xxxx-xxxx none luks ```字段解释:
保存并退出。接着编辑/etc/fstab以实现文件系统的自动挂载:
在文件末尾添加:
```text /dev/mapper/secure_data /mnt/secure_data ext4 defaults 0 2 ```保存并退出。配置完成后,在下次重启时,系统启动过程会暂停并提示输入/dev/sdb1的密码,输入正确后会自动挂载到/mnt/secure_data。
在使用完毕或需要维护时,安全地关闭加密卷至关重要。不要直接拔电或强制重启。
卸载文件系统:
```bash sudo umount /mnt/secure_data ```如果提示“目标忙”,可以使用lsof /mnt/secure_data查看占用进程并关闭,或者使用sudo umount -l /mnt/secure_data进行懒卸载。
移除设备映射(锁定加密卷):
```bash sudo cryptsetup luksClose secure_data ```执行后,/dev/mapper/secure_data消失,数据重新变为不可读的密文状态。
为了防止密码遗忘,LUKS支持添加多个密钥槽。你可以生成一个密钥文件作为备用解锁方式。
生成一个随机密钥文件:
```bash sudo dd if=/dev/urandom of=/root/secret_key bs=1024 count=1 sudo chmod 400 /root/secret_key ```将此密钥文件添加到LUKS分区(需要输入原密码):
```bash sudo cryptsetup luksAddKey /dev/sdb1 /root/secret_key ```以后,除了输入密码,你也可以使用该文件解锁:
```bash sudo cryptsetup luksOpen /dev/sdb1 secure_data --key-file /root/secret_key ``>至此,你已经掌握了Linux系统下从磁盘分区、LUKS加密格式化、挂载使用到自动挂载配置及安全关闭的全套实操流程。
上一篇: 系统活动系统是什么?如何设计和搭建一个高效的企业级系统活动系统?
下一篇: 系统界面
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图