linux luks自动加密和挂载磁盘详解

 更新时间:2026年04月17日 10:34:34   作者:搬砖的梦先生  
文章主要介绍了Linux下的分区加密工具cryptsetup的使用方法,包括创建加密磁盘分区、luks加密、打开luks加密盘、操作配置luks加密盘、开机自动解密和挂载加密盘等步骤,同时,还提供了相关命令和参数说明

1、描述

cryptsetup是linux下的一个分区加密工具,它通过调用内核中的"dm-crypt"来实现磁盘加密的功能。

从安全的角度来看,对敏感数据进行加密以保护其免受窥探和黑客的攻击是很重要的。 Linux 统一密钥设置(Linux Unified Key Setup)(LUKS)是一个很好的工具,也是 Linux 磁盘加密的通用标准。因为它将所有相关的设置信息存储在分区头部中,所以它使数据迁移变得简单。

要使用 LUKS 配置加密磁盘或分区,我们需要使用 cryptsetup 工具。

使用cryptsetup对分区进行了加密后,这个分区就不再允许直接挂载。LUKS也是一种基于device mapper 机制的加密方案。如果要使用这个分区,必须对这个分区做一个映射,映射到/dev/mapper这个目录里去,我们只能挂载这个映射才能使用。然而做映射的时候是需要输入解密密码的。

2、创建加密磁盘分区

例如:我们现在对现有的 /home目录进行加密

执行lsblk ,我们可以看到home目录对应的磁盘是sda3,全路径即是:/dev/sda3

$ lsblk 
NAME     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda        8:0    0   477G  0 disk  
├─sda1     8:1    0   600M  0 part  /boot/efi
├─sda2     8:2    0     1G  0 part  /boot
├─sda3     8:3    0 397.7G  0 part  /home
├─sda4     8:4    0    70G  0 part  /
└─sda5     8:5    0   7.7G  0 part  [SWAP]
sdb        8:16   1   7.5G  0 disk  
└─sdb1     8:17   1   7.5G  0 part

我们需要去umount home目录

umount 可能报错:目录繁忙。

解决方案:关闭正在执行的任务,任何执行目录、存储目录涉及到home的任务。

$ umount /home

再次执行lsblk ,我们可以看到磁盘sda3的挂载home没有了

$ lsblk 
NAME     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda        8:0    0   477G  0 disk  
├─sda1     8:1    0   600M  0 part  /boot/efi
├─sda2     8:2    0     1G  0 part  /boot
├─sda3     8:3    0 397.7G  0 part  
├─sda4     8:4    0    70G  0 part  /
└─sda5     8:5    0   7.7G  0 part  [SWAP]
sdb        8:16   1   7.5G  0 disk  
└─sdb1     8:17   1   7.5G  0 part

3、luks加密

安装加密软件,一般服务器自带

$ yum install cryptsetup -y
cryptsetup [其他参数] luksFormat 需要加密的磁盘

常用参数:

参数名称描述
–cipher加密方式
–key-size密钥长度
–hash散列算法
–iter-time迭代时间,单位为毫秒。值越大,暴力 破解越难,打开加密盘的时间也越久

我们这里使用默认值,执行的过程中,命令会警告你将会清除磁盘上的所有数据,并要求你输入两次密码

注意:下面的YES必须输入大写的

$ cryptsetup luksFormat /dev/sda3
WARNING!
========
这将覆盖 /dev/sda3 上的数据,该动作不可取消。

Are you sure? (Type 'yes' in capital letters): YES
输入 /dev/sda3 的口令:
确认密码:

4、打开luks加密盘

命令如下:

cryptsetup 加密类型Open 加密磁盘 映射名称

执行该命令后就会将 /dev/sda3 解密,并映射成 /dev/mapper/home

$ cryptsetup luksOpen /dev/sda3 home
输入 /dev/sda3 的口令:

5、操作和配置luks加密盘

## 在加密的分区上创建一个 XFS 文件系统
$ mkfs.xfs /dev/mapper/home
$ mount /dev/mapper/home /home
$ touch /mnt/secret

6、开机自动解密和挂载加密盘

生成随机字符串,熵越大越好

$ dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
HFqidAwFgdivQ6HEKNjcXQqTrynvfN/xQiicdR2TOgGEpRhqIqF8cS7Iwid6Y/3BO697gv0KM/0iJFQLQ7YNLneqdYJwKlPhRMQnnEHroRluU30H5XfyqXnxFDTjYSJ0mA459QO4Zj7PM7klsAydwI8Umf+muMhkC9V69DepzIYZmzzdPIlAxB2r0aSJ6CILjaTsU4HD8Q7Vy1luGMrYpCHiWTB1vtRbI6UeElylnkWh3vqxQJd/lGG2v3L2er7i1ag3u5STsfd6XjDEzuHwfkBmE91tpH48OoS+/D6V9I8bqrF+q2EQlnOFuWVBOldGlG52UPYRvuF7HiznzEoOqa+MA8mK+R0foLss3hmpq1wqKjkIeFxQpW69acAgvO3yF8AMaxvYd3WlFP4ZBtq400pYC470ZEhbJYWK8HKvQlo2tb2Z5z5beF+IWiY0ejqmgjIjH9px6u94PqHCooy92duihTZdGEYw9RfcahDoouliikR1uG2jYI9CxiFRxVRn1MMcuI2yg87kjIk5eqSt0glJxvEjudDORHvpGeamSHqeZ6KvcYVEFrml1leDKJWIbF8bwk3TxwYB/vw74FUZ9gHIM25T+KgfwsGMYsrVh0TcweCkuEwSX4RSmY6/pILrLx/RXyWbvOjlA+PjVz1id5JWtF57+jEYwIVomPniBXKrh8YAjqduPr1dCNzetf6N1OAR5P5CzDok5W6QrHdazUZ2XzD8TD0CysKBsEorv8csOEnrT6wEi5HfNVyWBndoNQOtVzroB8CAAZB0hZYC9OEMop9GVChWgRkUA/Pd0MjYTahR7p9r1plvPPcv13zADXWPZNRTM4roM2XoJt7qpfCpgpDbQlmE7uPrmy612o+z6RMg18PC7+6oaSHsy7ATb4qpg5mNcoGEUfBCdZchnymygIAsHzn3+wlm+cpgK1X/DHNrWsUmwRZbAWg7PQIS1qeyM70uLZ8KlLgHUJWY9WeqMJpnHL6ln156iOERppfBW+N5JJZrvfPxYUa8oVc0epk/ZIabQ+sWBF4odav2psLAB94haC3WXU8OqKWZrggi8/HK4mCc0INPrOEmNXRQtl76sMYsqlRzcJQxD/kjz5VTqjHk4Zhr90Kf0GW46uXu9epLo0uSDev/toSUgxvBp8QN6SBpxfUcHqjlY5tpxrNIuFK0ZwiYGQAfynhrLWymVNoD8hoQoE9IFC57Yk+iqdOrCK1Tac6rMns6bcxakSovHvpsThfwuY7qJhrcCm1zx5WRCriRjj7vYEuE6LPent+lY2v9ImcJX9SE1MjuTyQXKwVrQehBvpJ76VZ35PAldoQR5vSN86mGmnhnZ4uRyMgPh4RfuKqR0C5WzBWOeA=

将随机内容写入到一个文件,并设置文件权限,只允许 root 读写

$ vim /root/luks_pass
$ chmod 600 /root/luks_pass

设置开机自动解密 luks 分区:

$ vim /etc/crypttab
# <name>  <device>      <password> <options>
home    /dev/sda3       /root/luks_pass

把密码添加到luks加密中,这一步必须执行才能使密码生效:

$ cryptsetup luksAddKey /dev/sda3 /root/luks_pass
输入任意已存在的口令:

注释老的home自动挂载,设置新的 home 自动挂载点:

$ vim /etc/fstab

# 
# /etc/fstab
# Created by anaconda on Tue Jun 20 10:39:43 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=715d159b-2612-439d-8da9-4f003aebe3be /                       xfs     defaults        0 0
UUID=fbbb9210-1b17-485b-b95d-5e550e3b7be8 /boot                   xfs     defaults        0 0
UUID=D918-3920          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
# 注释掉老的home挂载信息
# UUID=7ee7cabf-8627-46b0-b40c-2c329926e775 /home                   xfs     defaults        0 0
UUID=de06acc9-4238-4de4-bc67-b754c2c0e993 none                    swap    defaults        0 0

#配置新的home挂载信息
/dev/mapper/home        /home   xfs    defaults        0       0
~                                                                     

7、查看加密盘

$ cryptsetup status home
/dev/mapper/home is active.
  type:    LUKS2
  cipher:  aes-xts-plain64
  keysize: 512 bits
  key location: keyring
  device:  /dev/sda3
  sector size:  512
  offset:  32768 sectors
  size:    833939456 sectors
  mode:    read/write

8、关闭加密盘

$ umount /mnt
$ cryptsetup close home

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • centos7.6批量增加修改删除虚拟网卡操作介绍

    centos7.6批量增加修改删除虚拟网卡操作介绍

    大家好,本篇文章主要讲的是centos7.6批量增加修改删除虚拟网卡操作介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • ubuntu下使用sublime text时如何完美输入中文

    ubuntu下使用sublime text时如何完美输入中文

    网上的很多方法都不能让ubuntu下的sublime输入中文,使用Input Helper也很是别扭,这个方法是某大神通过启动sublime程序前运行脚本修改sublime来实现中文输入。
    2015-12-12
  • Linux根分区爆满(占用81%)排查与解决方案

    Linux根分区爆满(占用81%)排查与解决方案

    在Linux服务器运维过程中,根分区爆满是非常常见的紧急故障,若不及时处理,会导致服务器无法正常运行、服务卡顿甚至崩溃,因此本文记录了一次CentOS服务器根分区占用81%的排查与解决过程,需要的朋友可以参考下
    2026-04-04
  • 详解如何在 CentOS 7 中安装或升级最新的内核

    详解如何在 CentOS 7 中安装或升级最新的内核

    这篇文章主要介绍了详解如何在 CentOS 7 中安装或升级最新的内核,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Linux如何快速检查服务器的硬件配置和性能指标

    Linux如何快速检查服务器的硬件配置和性能指标

    在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以 CentOS 为例,介绍如何通过命令行快速获取这些关键信息,并提供详细的代码示例和解析,需要的可以了解下
    2025-06-06
  • linux 分区,格式化,挂载的命令详细介绍

    linux 分区,格式化,挂载的命令详细介绍

    这篇文章主要介绍了linux 分区,格式化,挂载的命令详细介绍的相关资料,这里对命令进行了详解并附简单实例说明该如何实现,需要的朋友可以参考下
    2016-11-11
  • linux下查看内存条数及每根内存大小的实现方法(推荐)

    linux下查看内存条数及每根内存大小的实现方法(推荐)

    下面小编就为大家带来一篇linux下查看内存条数及每根内存大小的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • linux下如何搭建时间服务器

    linux下如何搭建时间服务器

    本文介绍了如何在Linux系统中使用chronyd服务配置时间服务器,包括时间同步和状态检查,首先配置一台虚拟机作为时间服务器,不从网络同步时间而使用本地时间,另一台虚拟机作为客户端,从时间服务器同步时间,详细步骤包括编辑chrony.conf文件
    2024-09-09
  • Linux中使用nfs共享存储的方式

    Linux中使用nfs共享存储的方式

    NFS是一种基于TCP/IP传输的网络文件系统协议,通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源,本文给大家介绍Linux中使用nfs共享存储的相关知识,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • CentOS6.5 升级 Python 2.7 版本详细介绍

    CentOS6.5 升级 Python 2.7 版本详细介绍

    这篇文章主要介绍了 CentOS6.5 升级 Python 2.7 版本详细介绍的相关资料,需要的朋友可以参考下
    2017-01-01

最新评论