一、安装工具 cryptsetup
sudo yum install cryptsetup
# Ubuntu 系统执行如下命令
# sudo apt-get install cryptsetup
二、创建一个虚拟磁盘文件
dd if=/dev/zero of=secDisk.img bs=1G count=10
这个命令的意思就是从“黑洞”文件读取0数据,写入当前目录中的 secDisk.img 文件中。写入的数据大小是 1G * 10 个,也就是说secDisk.img 文件的大小是 10G。
所以这个命令会创建一个10G 大的虚拟磁盘文件,文件名为 secDisk.img,位置是当前目录。
三、创建 dm-crypt LUKS 容器
在刚创建的虚拟磁盘文件 secDisk.img 上创建 LUKS 容器。
cryptsetup -y luksFormat secDisk.img
四、打开容器并创建 mapping
cryptsetup luksOpen secDisk.img sec_disk_mapping
这个命令会创建一个 mapping 文件:/dev/mapper/sec_disk_mapping
可以通过下面命令查看这个 mapping 文件的状态:
$ ls /dev/mapper/sec_disk_mapping -lh
brw-rw---- 1 root disk 253, 5 Jan 19 06:43 sec_disk_mapping
$ cryptsetup -v status /dev/mapper/sec_disk_mapping
/dev/mapper/sec_disk_mapping is active.
type: LUKS1
cipher: aes-xts-plain64
keysize: 256 bits
key location: dm-crypt
device: /dev/loop1
loop: /home/data/test-sec/secDisk.img
sector size: 512
offset: 4096 sectors
size: 2093056 sectors
mode: read/write
Command successful.
五、在虚拟磁盘上创建文件系统
创建文件系统:
mkfs.ext4 /dev/mapper/sec_disk_mapping
如果系统中找不到命令 mkfs.ext4,可以使用下面命令进行安装:
sudo yum install -y e2fsprogs
# Ubuntu 系统使用如下命令安装
#sudo apt-get install -y e2fsprogs
六、挂载文件系统
mkdir encryptedDisk
mount /dev/mapper/sec_disk_mapping $(pwd)/encryptedDisk
七、修改文件 owner
如果当前不是超级用户,可能没有对磁盘的读写权限。所以需要修改虚拟磁盘的 owner:
cd $(pwd)/encryptedDisk # 进入刚刚挂载的磁盘文件目录中
chown username:username . -R
username 就是你自己的用户名。
到目前为止,虚拟磁盘就算创建完成了,并且可以在其中进行读写操作。
八、卸载虚拟磁盘
虚拟加密磁盘的用途就是为了加密,如果这么一只挂载着,那么就失去了加密的意义。所以,在使用完这个虚拟磁盘后,需要及时的将它 umount ,并将它 luksClose 掉。
卸载虚拟磁盘的过程如下:
8.1、先 umount 虚拟磁盘
umount /dev/mapper/sec_disk_mapping
8.2、然后关闭 LUKS
cryptsetup luksClose /dev/mapper/sec_disk_mapping
这样就把虚拟磁盘关闭了。
如果想要再次打开这个虚拟磁盘,需要先执行第四步的 luksOpen 操作,再执行第六步的 mount 操作,然后就可以再次使用加密的虚拟磁盘了。