|
|
51CTO旗下网站
|
|
移动端

如何用dm-crypt加密Linux上的分区?

硬盘和SSD很容易从笔记本或台式机上拆下来。这种情况下,操作系统实施的所有安全措施都荡然无存。如果你有数据要保护,可以创建加密容器,将敏感文件保存在那里,而将非敏感文件保存在普通分区上。

作者:布加迪编译来源:51CTO|2018-12-10 09:00

如何用dm-crypt加密Linux上的分区?

【51CTO.com快译】硬盘和SSD很容易从笔记本或台式机上拆下来。这种情况下,操作系统实施的所有安全措施都荡然无存。如果你有数据要保护,可以创建加密容器,将敏感文件保存在那里,而将非敏感文件保存在普通分区上。

安装Linux发行版时,创建加密分区极为容易。安装程序可以指导你完成此操作。但如果你错过了这个机会,可按照本文中的步骤创建秘密保险库。

先决条件

需要一个空白分区完成此过程,也就是上面没有文件系统的未格式化分区。

如果格式化的分区目前占据你存储设备上的所有可用空间,需要使用GParted缩小其中一个分区。

警告:先备份数据是明智之举。缩小分区及文件系统时,可能存在小小的风险。计算机在此过程中可能崩溃或断电。这可能导致文件系统处于不一致的状态,因而很难恢复。

遵照本文的头几步用GParted调整分区大小。或者如果有个分区再也用不着,可以删除它。(释放一些空间、它显示为“未分配”后,跳过本文中的其余步骤。)具体来说,别创建格式为ext4的分区,而是鼠标右击未分配的空间,如图所示。在打开的对话窗口中,你会看到标有“文件系统”的字段。通常,ext4在这里被选择为默认文件系统。点击并更改成“cleared”。

如何用dm-crypt加密Linux上的分区?

图1

选择“Add”后,点击绿色打勾符号,让更改生效。

安装cryptsetup

如果你启动实时操作系统以便用GParted编辑分区,请重启回到主Linux发行版。

打开终端模拟器。在基于Debian的系统上,比如Ubuntu或Linux Mint,输入该命令:

  1. sudo apt update && sudo apt install cryptsetup 

如何用dm-crypt加密Linux上的分区?

图2

在Fedora或CentOS等发行版和使用RPM软件包而不是DEB的其他发行版上, cryptsetup可能早已安装。如果还没有安装,可以使用该命令来安装:

  1. sudo yum install cryptsetup 

在OpenSUSE上,如果cryptsetup之前没有安装,可以使用该命令来安装:

  1. sudo zypper refresh && sudo zypper install cryptsetup 

在基于Arch的发行版上,可以使用该命令:

  1. sudo pacman -S cryptsetup 

查找分区的块设备名称

输入下列命令:

  1. lsblk 

如何用dm-crypt加密Linux上的分区?

图3

在图中提供的示例中,存储设备是“vda”。“vda1”到“vda3”是分区。

想找到你准备好的分区,记住为其保留的大小。你会在没有挂载点(mountpoint)的分区中找到它。以你的情况为例,它可能是“/dev/sda2”,而不是“/dev/vda3”。

加密分区将覆盖上面的数据(如果有的话),这意味着如果你搞错了设备名称,最终可能破坏有用的数据。想确保设备名称无误,可以安装GParted,查看分区布局。设备名称会在图形用户界面中列出来。从实时系统启动时,别使用你在GParted中看到的名称。实时系统中显示的布局与你从安装的发行版引导时看到的布局会不一样。

还有另一种方法可以确保你不会写错到块设备上。试着挂载块设备。通常,它会拒绝挂载,因为它上面没有文件系统。

重要提示:请记住始终将“vda3”换成你设备的名称:

  1. sudo mount /dev/vda3 /mnt 

以你的情况为例,该命令可能是sudo mount /dev/sda2 /mnt或别的命令。

这是你应该看到的信息。

如何用dm-crypt加密Linux上的分区?

图4

设置LUKS标头

一旦你确信有了正确的设备名称,可以为分区添加LUKS标头。

  1. sudo cryptsetup luksFormat /dev/vda3 

键入“YES”,然后为加密分区选择一个强密码。要求验证密码时,请键入相同的密码。

在分区上创建文件系统

你要将该物理设备映射到虚拟设备。写入到虚拟设备上的内容先经过加密,之后存储到物理设备上。

  1. sudo cryptsetup luksOpen /dev/vda3 encrypted-partition 

分区需要文件系统才有用。使用该命令创建一个ext4文件系统:

  1. sudo mkfs.ext4 /dev/mapper/encrypted-partition 

如何用dm-crypt加密Linux上的分区?

图5

挂载加密分区

创建你将从分区挂载文件系统的目录。

  1. mkdir ~/encrypted-storage 

挂载文件系统:

  1. sudo mount /dev/mapper/encrypted-partition ~/encrypted-storage 

更改到该目录:

  1. cd ~/encrypted-storage 

眼下,只有root用户可以在这里写入。为你的用户授予写入到该文件系统的权限,因此让它成为上层目录的所有者。拷贝粘贴整个命令,包括末尾的“.”。

  1. sudo chown $USER:$USER . 

限制其他用户读取或写到该目录。

  1. chmod o= . 

这时,大多数文件管理器应该在界面中显示新的加密设备。这显示了它在Thunar文件管理器中的样子,这是XFCE桌面环境中使用的默认文件管理器。

如何用dm-crypt加密Linux上的分区?

图6

如果卷未挂载,你点击它时会要求你输入卷密码和sudo密码。卷会自动挂载,你就能够浏览它。挂载点与“~/encrypted-storage”会不一样,它可能类似“/media/user/f42f3025-755d-4a71-95e0-37eaeb761730/”。

这不重要;你之前设置的权限仍然适用。重要的是记住完成卷的使用后鼠标右击并卸载。卸载和关闭虚拟设备可确保没人可以从加密分区读取数据,甚至从操作系统读取数据。

如果由于某种原因,你的文件管理器不支持该功能,可以从终端挂载。

  1. sudo cryptsetup luksOpen /dev/vda3 encrypted-partition  
  2. sudo mount /dev/mapper/encrypted-partition ~/encrypted-storage  

现在你可以进入到文件管理器中的“/home/username/encrypted-storage”来访问该卷。访问完后,挂载文件系统并关闭虚拟设备:

  1. cd && sudo umount /dev/mapper/encrypted-partition  
  2. sudo cryptsetup luksClose /dev/mapper/encrypted-partition  

结论

现在你有了保存重要文件的保险箱。你大可放心,因为没人能看到你保存在里面的内容。

原文标题:How to Encrypt Your Partitions on Linux with dm-crypt,作者:Alexandru Andrei

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. 如何实现Linux + Windows双系统启动
  2. 浅谈Android与Linux系统的差异
  3. 对不起 Linux,Kubernetes现在是更重要的操作系统!
  4. 80%的 Linux 运维都不懂的内核问题
  5. 又一批Linux内核组件与工具开源!来自Facebook!
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

活学活用 Ubuntu Server

活学活用 Ubuntu Server

实战直通车
共35章 | UbuntuServer

218人订阅学习

Java EE速成指南

Java EE速成指南

掌握Java核心
共30章 | 51CTO王波

83人订阅学习

Mysql DBA修炼之路

Mysql DBA修炼之路

MySQL入门到高阶
共24章 | 武凤涛

471人订阅学习

读 书 +更多

敏捷Acegi、CAS:构建安全的Java系统

本书是关于Acegi、CAS的权威教程,是Java/Java EE安全性开发者的必备参考书。无论是Java EE安全性编程模型的背景和基础知识,还是Acegi、CA...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客