mount:此类文件或目录没有经过加密的恢复


12

我已经破坏了Mint Linux的安装。我只是想访问我的远程店面。因此,发生的是我在主目录中的ICEauthority文件遇到问题。因此,按照Internet上的不同方向,我得出的结论是,我可以将主目录递归设置为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].

我真的很担心,因为我在那里存储着重要文件,这些文件存储在虚拟机上……如果我可以访问那些文件,那么我就不会担心设置和重新开始

Answers:


13

我发现先运行sudo bash然后再ecryptfs-recover-private以root身份运行(而不是通过sudo)是可行的。不知道为什么应该有所不同。

编辑:

TL; DR:

# 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

您将不会看到提示,必须在上述命令中键入您的登录密码(盲目)。

按顺序用上方输出中括号之间的十六进制签名替换aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb下方:

# 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

初赛

事实证明,仅以root身份运行对我而言并不可靠;有时是这样,有时不是。基本上,ecryptfs似乎有错误,并且非常不友好,经常使登录密码和挂载密码混淆。钻进深深的兔子黑洞后,我有一些应该有用的提示。这些说明适用于Ubuntu 17.10,ecryptfs-utils 111-0,在开始之前,您应该成为root用户。我假设您要将主目录从/mnt/crypt(应该已经挂载)挂载到/mnt/plain,并且应该user用用户名替换。

轻松开始

首先要尝试的是:

# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private

如果这样有效,那么您很幸运。如果不是,它可能给出错误信息mount有关no such file or directory。这极具误导性:真正的意思是您的挂载密码短语错误或丢失。

获取签名

这是重要的部分:我们需要验证ecryptfs是否确实在尝试正确的挂载密码。在ecryptfs可以挂载文件系统之前,必须将密码短语加载到Linux内核中。ecryptfs通过签名要求内核。签名是一个16字节的十六进制值(并且对密码不敏感)。您可以找到ecryptfs期望的密码短语签名:

# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb

记住这些。目的是获取将这些签名加载到内核中的密码短语,然后告诉ecryptfs使用它们。第一个签名(aaaaaaaaaaaaaaaa)用于数据,第二个签名()用于bbbbbbbbbbbbbbbb文件名加密密钥(FNEK)。

获取安装密码

该命令将要求您提供登录密码(带有误导性提示),并输出安装密码:

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase

复制此内容,但要小心!!,因为这在密码学上非常敏感,所以是王国的钥匙。

尝试交互式安装

接下来要尝试的是:

# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

这里的关键是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

如果签名错误(与来源不符Private.sig),则挂载将不起作用。

...但是它将非常无助地报告它确实如此。您将必须做一个ls /mnt/plain并整理一个文件以确保。此时,您还可以查看/var/log/syslog并验证ecryptfs是否在寻找与我们相同的签名。

显然,这里的ecryptfs有两个严重的问题,我们必须解决它们。

将密钥加载到内核

如果交互式安装没有帮助,我们必须自己将密钥加载到内核中,然后在安装选项中手动指定它们。

# ecryptfs-add-passphrase --fnek

然后粘贴从上方复制的(非常敏感的)安装密码。这应该输出:

Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring

手动安装

现在,密码短语已加载到内核中,我们只需要告诉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

您会注意到这些选项与交互式挂载打印的选项类似,除了我们手动告诉ecryptfs发生了什么。

希望这行得通。如果没有,您可以使用来检查密钥是否以正确的签名加载到内核中,该签名keyctl list @u应该至少打印出您期望的两个签名。


4
ecryptfs-recover-private输出mount(2)错误时,有一种解决方法。尝试运行sudo ecryptfs-manager,按4(退出),然后再次运行原始文件ecryptfs-recover-private。应该现在可以工作
ulkas

1
@ulkas知道为什么这样有效吗?
Turion

2
@Turion我用谷歌搜索了解决方案,所以我不是发明家。我的猜测是ecryptfs某个版本中存在bug,调用管理器只是设置了一些变量,这些变量以后会由mount.use重用。任何想法如何使它自动化,以便每次重新启动后都可以装载我的文件夹?
ulkas '18

1
keyctl link @u @s对我来说是一个非常简单的解决方案。积分可以去这里:bugs.debian.org/cgi-bin/bugreport.cgi?bug=870126
SUP

尽管我的问题可能与原始海报有所不同。
SUP

1

对于此问答的未来查看者:相同的明显症状可能是由不同的根本原因引起的。症状如下:

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].

就我而言,此答案是解决方案的关键。问题是我试图在Tmux会话中通过SSH远程执行所有操作,但受到以下行中的限制/etc/pam.d/sshd

session    optional     pam_keyinit.so force revoke

前面提到的答案建议对此行进行注释,然后在新会话中重试。

在我的案例中,一种简单的解决方法是在位置上进行操作,完全避免使用SSH和Tmux。一个更复杂的解决方法(我尚未验证)是使用conspy之类的方法来远程访问无限制的终端。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.