Fra*_*int 14 encryption linux-mint ecryptfs
我已经销毁了我的 Mint Linux 安装。我只想访问我的远程店面。所以发生的事情是我在我的主目录中遇到了 ICEauthority 文件的问题。因此,按照互联网上的不同方向,我得出的结论是,我可以递归地将主目录设置为 chmod 755 以允许该文件工作……最终我遇到了系统加载问题。最终,通过将主目录设置为 root 的可执行权限,我能够获得读/写访问权限……但后来我重置了我的机器哦,为什么哦,为什么我重置了我的机器!!!- 现在系统向我抛出与 ICEauthority 相同的错误,但它永远不会让我进入操作系统,因为磁盘是加密的。我试过的任何东西似乎都不起作用,而且我没有原始的安装种子。
frankenmint@honeybadger /home $ sudo ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase:
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].
Run Code Online (Sandbox Code Playgroud)
我真的很担心,因为我有重要的文件存储在虚拟机上……如果我能访问这些文件,那么我就可以毫不犹豫地进行设置并重新开始
Doc*_*r J 16
我发现运行sudo bash
然后ecryptfs-recover-private
以 root 身份运行(而不是通过 sudo)是有效的。不知道为什么它应该有所不同。
编辑:
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase - | ecryptfs-add-passphrase --fnek -
< Type your login password here >
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Run Code Online (Sandbox Code Playgroud)
您不会看到提示,必须在上述命令中输入您的登录密码,blind。
用上面输出中括号之间的十六进制签名替换下面的aaaaaaaaaaaaaaaa
和bbbbbbbbbbbbbbbb
下面的,按顺序:
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
Run Code Online (Sandbox Code Playgroud)
事实证明,仅以 root 身份运行对我来说并不可靠;有时会,有时不会。基本上,ecryptfs 似乎有问题并且对用户非常不友好,经常混淆登录密码和挂载密码。在进入一个又深又黑的兔子洞之后,我有一些应该会有所帮助的提示。这些说明适用于 Ubuntu 17.10、ecryptfs-utils 111-0,您应该在开始之前成为 root。我假设您想将您的主目录从/mnt/crypt
(应该已经安装)安装到/mnt/plain
,并且您应该替换user
为用户名。
首先要尝试的是:
# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private
Run Code Online (Sandbox Code Playgroud)
如果这有效,那么,你很幸运。如果没有,它可能会从mount
about给出错误消息no such file or directory
。这是极具误导性的:它的真正含义是您的挂载密码错误或丢失。
这是重要的部分:我们需要验证 ecryptfs 是否真的在尝试正确的挂载密码。在 ecryptfs 可以挂载您的文件系统之前,必须将密码加载到 Linux 内核中。ecryptfs 通过它们的签名向内核询问它们。签名是一个 16 字节的十六进制值(并且不是加密敏感的)。您可以找到 ecryptfs 期望的密码短语签名:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
Run Code Online (Sandbox Code Playgroud)
记住这些。目标是将带有这些签名的密码短语加载到内核中,然后告诉 ecryptfs 使用它们。第一个签名 ( aaaaaaaaaaaaaaaa
) 用于数据,第二个 (bbbbbbbbbbbbbbbb
) 是文件名加密密钥 (FNEK)。
此命令将要求您输入登录密码(带有误导性提示),并输出您的挂载密码:
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
Run Code Online (Sandbox Code Playgroud)
复制这个,但要小心!!,因为这对密码非常敏感,是王国的钥匙。
接下来要尝试的是:
# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
Run Code Online (Sandbox Code Playgroud)
这里的关键是mount
需要你的(超级敏感)安装密码我们刚刚复制的((不是您的登录密码)。
这会问你一些问题,你可以接受默认值,除了对Enable filename encryption
。它可能会给你一个警告并要求缓存签名;您可以对两者都说是,但请仔细检查您是否拥有正确的挂载密码。
您将看到mount
决定为您尝试的选项:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=aaaaaaaaaaaaaaaa
Mounted eCryptfs
Run Code Online (Sandbox Code Playgroud)
如果签名错误(与您从 中得到的不匹配Private.sig
),则安装将无法工作。
...但它会非常无益地报告它确实如此。你将不得不做一个ls /mnt/plain
和 cat 一个文件来确保。此时,您还可以查看/var/log/syslog
并验证 ecryptfs 正在寻找与我们相同的签名。
ecryptfs 显然有两个严重的问题,我们必须解决它们。
如果交互式挂载没有帮助,我们必须自己将密钥加载到内核中并在挂载选项中手动指定它们。
# ecryptfs-add-passphrase --fnek
Run Code Online (Sandbox Code Playgroud)
并粘贴从上面复制的(超级敏感)安装密码。这应该输出:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Run Code Online (Sandbox Code Playgroud)
现在密码被加载到内核中,我们只需要告诉 mount 使用它们:
# umount /mnt/plain
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
Run Code Online (Sandbox Code Playgroud)
您会注意到这些选项与交互式挂载打印出来的选项类似,除了我们手动告诉 ecryptfs 发生了什么。
希望这有效。如果没有,您可以检查密钥是否使用正确的签名加载到内核中keyctl list @u
,这应该至少打印出您期望的两个签名。