前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu ZFS 加密 Home 目录

Ubuntu ZFS 加密 Home 目录

作者头像
eallion
发布2022-12-20 14:49:38
1.7K0
发布2022-12-20 14:49:38
举报
文章被收录于专栏:大大的小蜗牛大大的小蜗牛

警告

本文最后更新于 2020-09-11,文中内容可能已过时。

前言

Ubuntu 20.04 的安装镜像支持 ZFS 文件系统:

https://images.eallion.com/images/2020/09/install.png
https://images.eallion.com/images/2020/09/install.png

本文是 安装后 加密 ZFS Home 目录的备忘教程。 另外有 安装前 加密 ZFS Root 文件系统的备忘教程。链接:《Ubuntu ZFS 原生全盘加密》

步骤

1、安装时创建一个随意的临时账号,或者安装完成后,新建一个临时管理员用户,暂且把这个账号叫做:tempuser,并把它设置为自动登录,此账号必须为管理员账号。 后面的步骤均在此临时账号下进行。

2、注销或重启后,登录 tempuser 账号,重新创建一个长期使用的用户,比如我的账号叫:eallion

3、查看 ZFS 数据集

代码语言:javascript
复制
sudo zfs list -r rpool

记录下你要用到的用户名的数据集名称,每个人的快照名字都不一样。 比如我的:eallion_c1doe6 返回值如图所示:

https://images.eallion.com/images/2020/09/rpoollist.png
https://images.eallion.com/images/2020/09/rpoollist.png

4、取消挂载新用户 eallion 的数据集

代码语言:javascript
复制
sudo zfs set mountpoint=none rpool/USERDATA/<yourdatasetname>

例如:

代码语言:javascript
复制
sudo zfs set mountpoint=none rpool/USERDATA/eallion_c1doe6

如果这一步遇到错误,如:target is busy,需要自行排错。比如我遇到的就是挂载了其他硬盘,导致不能取消数据集的挂载。

5、给新用户 eallion 创建一个新的加密数据集

代码语言:javascript
复制
sudo zfs create -o encryption=on -o keyformat=passphrase rpool/USERDATA/<yourusername>_encrypt

例如:

代码语言:javascript
复制
sudo zfs create -o encryption=on -o keyformat=passphrase rpool/USERDATA/eallion_encrypt

输入密码短语,回车。(一定要记住此密码。)

6、挂载这个加密数据集到新用户目录

代码语言:javascript
复制
sudo zfs set mountpoint=/home/<yourusername>  rpool/USERDATA/<yourusername>_encrypt

例如:

代码语言:javascript
复制
sudo zfs set mountpoint=/home/eallion  rpool/USERDATA/eallion_encrypt

7、检测一下是否配置正确(如果没有返回什么,就代表配置成功了)

代码语言:javascript
复制
sudo mount -a

8、检查一下加密是否成功(加密数据卷应该会有密码方式,如:aes-256-gcm

代码语言:javascript
复制
sudo zfs list -r rpool -o name,encryption

如图: 我用的是全盘加密,所以全部返回 aes-256-gcm, 如果只加密了 Home 目录,则其他目录返回的是 None

https://images.eallion.com/images/2020/09/encryption.png
https://images.eallion.com/images/2020/09/encryption.png

9、让加密目录用上 ZFS 的自动快照功能,Grub 引导项中也能选择快照历史恢复系统。

代码语言:javascript
复制
sudo zfs set com.ubuntu.zsys:bootfs-datasets=rpool/ROOT/<nameofdataset> rpool/USERDATA/<yourusername>_encrypt

例如:(注意:你的数据集不一定叫 ubuntu_rroyp0,通过第 3 步可以查看。)

代码语言:javascript
复制
sudo zfs set com.ubuntu.zsys:bootfs-datasets=rpool/ROOT/ubuntu_rroyp0 rpool/USERDATA/eallion_encrypt

10、请确保 Home 目录的权限

代码语言:javascript
复制
sudo chown <yourusername>:<yourusername> /home/<yourusername>

例如:

代码语言:javascript
复制
sudo chown -R eallion:eallion /home/eallion

11、安装 ecryptfs-utils 加密交换空间 Swap

代码语言:javascript
复制
sudo apt install ecryptfs-utils
sudo ecryptfs-setup-swap

此时出现的一些错误提示例如 swapon: cannot open /dev/mapper/cryptswap1: No such file or device 可忽略。

12、查看一下是否成功

代码语言:javascript
复制
cat /etc/fstab
cat /etc/crypttab

PS、如果有多余的用户目录数据集占用空间,比如使用一段时间后才想起来想加密 Home 目录,老的数据集可以通过命令销毁,不过一定要记得备份重要数据。

代码语言:javascript
复制
sudo zfs destroy eallion1_123abc

Reference: https://medium.com/@steinarlbergmyrvang/ubuntu-20-04-with-encrypted-home-f5ce490333cc

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-112,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 步骤
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档