使用 ecryptfs-migrate-home 恢复加密

使用 ecryptfs-migrate-home 恢复加密

原料

  • Ubuntu 16.04
  • Linux 4.4.0-47-通用

来路

  • 几个月前将 Ubuntu 从 16.04 升级到了 14.04(但仍然感到后悔)

  • 前段时间修改了用户和 root 密码

  • 文件系统已加密(我声称我记得密码)

  • 几周没用电脑了(也许不重要,但这是唯一值得一提的事情)

问题

休息了一会儿后,我打开了电脑。

Ubuntu 欢迎程序以一种奇怪的方式向我询问加密密码:字符串Please enter passphrase for disk <disk ID> (cryptswap1) on none!:立即消失。

当我开始输入密码时,我又看到了这个字符串(这个术语实际上很模糊)。我声称我确实记得这个加密密码。

当我进入用户选择屏幕并尝试登录时,整个屏幕陷入了循环。所以我永远无法登录。请注意,这不是密码错误的问题。

研究

在类似情况下,我通常会在另一台计算机上解决这个问题,方法是转到tty1,登录并​​启动sudo ecryptfs-mount-private,然后在那里输入我的加密密码。现在,我收到了消息

ERROR: Encrypted private directory is not set up properly

如果我问ecryptfs-verify -p(来源更改密码后无法挂载加密主页,未配置 ecryptfs(未设置密码)),诊断为

ERROR: [/home/user/.ecryptfs] does not exist ERROR: Configuration invalid

如果我问sudo ecrypts-recover-private(来源ecryptfs-mount-private 错误),结果是 find: @/run/user/104/gvfsA: Permission denied

再说一遍,系统正常工作和不工作之间唯一发生的事情是我在此期间没有使用电脑。

不过,我要补充一点,在问题持续存在之后,当我处于 时tty1,我启动了 ,sudo apt-get update && sudo apt-get upgrade希望恢复系统不会造成任何损害。有趣的是,在安装过程中,我不得不多次输入加密密码/密码,而没有人对此抱怨(这证明我记得那个密码?)

12 月 6 日添加 如果我去tty1我实际上可以看到目录树未加密令我惊讶的是。因此,我推断加密在我不知情的情况下消失了,图形用户界面无法应对这种情况。

问题

对此诊断的含义的合理解释(就系统可靠性而言),以及一些使用桌面环境重新访问我的文件系统的说明,svp。

答案1

这个答案解决了如何恢复加密。登录界面循环的问题仍然存在,所以请随意编辑这个答案或发布您自己的答案(我很乐意接受它)。

使用 ecryptfs-migrate-home 恢复加密

必读

man ecryptfs-migrate-home简明解释了其工作原理和关键注意事项。请注意,如果您的驱动器中有足够的空间来复制未加密数据(以及更多内容),则此解决方案有效。df -h例如,使用 进行检查。

有用的阅读

本教程http://bodhizazen.com/Tutorials/Ecryptfs/尽管它指的是 Ubuntu 的旧版本,但它提供了一个很好的概述来熟悉 ecryptfs。

伪代码

这必须从终端(例如,可通过 CTRL + ALT + F1 访问的 tty)完成,并且所有用户都必须从任何会话中注销。

ecryptfs-migrate-home策略是,在数据未加密的配置文件旁边创建一个临时配置文件。然后,使用此临时用户在未加密的主页上启动。以下user是具有未加密主页的配置文件

login  # as user 
sudo adduser <tmpuser>
sudo adduser <tmpuser> sudo  # sudo rights are essential
exit  # log out user

login  # as tmp-user
sudo ecryptfs-migrate-home -u user  # sudo needed, mind the option
# ...
# script asks for `login passphrase` of user = linux login password
# makes check (with lsof, see below)
# verbose listings, can take time 
# prints diagnostics, to read carefully
exit  # log out tmp-user, DO NOT REBOOT

login  # as user again
ecryptfs-unwrap-passphrase  
# type in the log-in passphrase and save the mount passphrase
ls -a /home  # check that the directory .encryptfs has been created
ls /home/user  # check that the files are visibile
# play around until change of mood and mind, you may reboot

在做的过程中

该脚本ecryptfs-migrate-home启动lsof -u user(列出打开的文件)以确保用户没有打开文件。结果可能是以以下方式打开一个文件的警告:此错误信息的含义:lsof:警告:无法 stat() fuse.gvfs-fuse-daemon 文件系统 /home/nes/.gvfs——我以为可以忽略这一点,因为这涉及不可避免的情况。欢迎更正。

在它的任务结束时ecryptfs-migrate-home通知我rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]——rsync 由脚本本身启动,但我无法追溯哪些文件尚未传输以及它引用了哪些先前的错误。

做完之后

如果您查看,会发现旁边/home有一个新目录。前者包含旧状态:它是作为后备位置保留的明文副本,以防万一。在彻底测试新加密主目录的功能后,并且在驱动器中保存未加密数据有风险之前,可以删除/粉碎它。user.<some code>user

最后我设法将/home/user加密的文件恢复原位。

使用桌面环境登录

仍有待解决。欢迎贡献

相关内容