已删除 .ecryptfs 但系统仍在运行 - 有什么希望吗?

已删除 .ecryptfs 但系统仍在运行 - 有什么希望吗?

我相信我已经删除了我的 .ecryptfs 密码文件(~/.ecryptfs/ 为空),但该计算机仍处于在线状态,其驱动器已安装。我目前正在尝试使用 r-linux 恢复丢失的文件,并将尝试在网络驱动器上创建重要文件的备份,但我本质上想知道:

有没有办法在计算机仍在运行时重新生成我的 .ecryptfs 密码?我没有记下原始密码,我只有登录密码。

答案1

您可能仍有一些 .ecryptfs 文件被某个进程打开,在这种情况下,它们可能尚未真正被删除。如果它们已列出,lsof您可能仍可以将它们复制/移回。特别是查找该wrapped-passphrase文件。

最好的解决方案是,如果您有整个家庭的备份,包括文件wrapped-passphrase。如果所有文件都被删除,那么它们可能已经被覆盖,丢失登录密钥、包装密码文件和安装密钥将意味着它们也将被永久锁定。如果文件仍可读取,那么拥有实际安装密钥的副本将很有帮助。


或者,如果 eCryptfs 文件夹仍处于挂载状态,则密钥可能仍在内核密钥环中。使用以下命令查看

$ keyctl show
Session Keyring
 802145592 --alswrv    999 65534  keyring: _uid_ses.999
 542975566 --alswrv    999 65534   \_ keyring: _uid.999
 414895587 --alswrv    999   999       \_ user: 1848e1d7b8a187fc
 245849561 --alswrv    999   999       \_ user: 554c7c95a5b5d6ee

您可能会看到 1(无 fnek)或 2(有 fnek)个条目,如上面的最后 2 个条目。“1848e1d7b8a187fc”部分应与 eCryptfs 使用的挂载签名或 fnek 签名相匹配。您可以使用以下命令读取密钥

  • keyctl read 414895587- “read” 将其作为十六进制转储打印到标准输出上
  • keyctl print 414895587- 如果完全可打印,则“print”将其直接转储到标准输出;如果不可打印,则将其转储为以“:hex:”开头的十六进制转储
  • keyctl pipe 414895587 > piped-keyfile- “管道”将原始数据转储到标准输出

(用上面输出中相关行的第一部分替换数字keyctl show

如果你使用管道提取它,那么稍后此命令应该将密钥添加回密钥环中:

cat piped-keyfile | keyctl padd user keydescription @u

为了匹配格式,ecryptfs-add-passphrase我认为将密钥描述改回 16 个字符的签名以匹配原始keyctl show输出应该可行。


如果文件尚未被覆盖,文件恢复程序可能能够恢复最近删除的文件。程序因您要恢复文件的文件系统而异,或者尝试testdisk(在Ubuntu 宇宙存储库) 在从各种文件系统中恢复已删除文件方面非常成功。它的姊妹程序photorec可以搜索驱动器的所有可用空间并尝试恢复文件,但我不知道“ecryptfs packed-passphrase”是否是它认识的文件类型。

相关内容