我最近在我的 ecryptfs 加密主文件夹中发现了一个旧磁盘,里面有我想恢复的文件。但是我无法启动系统,因为它无法启动。我需要将旧磁盘连接到我的新计算机并从 CLI 恢复文件。
我如何才能访问我的旧文件?
答案1
网上有很多帖子,但没有一篇涵盖我从旧主文件夹恢复文件所需的所有步骤。在我的例子中,我将旧磁盘连接到虚拟机,但这在物理机上也应该以同样的方式工作。
(安装原始系统时,我使用了默认分区方案,其中主文件夹放在单独的分区上。因此将涵盖这一点。如果不是这种情况,您可以跳过第二次安装sdb4
。)
通过这些步骤,我能够恢复我的文件:(我的旧登录名是daniel
记住你的会有所不同)
1)成为rootsudo -s
2)将磁盘连接到虚拟机计算机,以便您使用以下命令查看分区:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 127G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 126.5G 0 part / <-- This is the root parition from my LIVE/current system
sdb 8:16 0 465.8G 0 disk
├─sdb1 8:17 0 512M 0 part
├─sdb2 8:18 0 31.3G 0 part
├─sdb3 8:19 0 131.9G 0 part <-- This is my old /-partition
└─sdb4 8:20 0 151.4G 0 part <-- This is my old /home-partition
3)挂载旧文件系统/mnt
并做好一切准备chroot
:
$ mount /dev/sdb3 /mnt/ <-- mount your original root
$ mount /dev/sdb4 /mnt/home <-- mount your original home
$ mount --rbind /dev /mnt/dev <-- prepare the chroot with the defaut sysfs-stuff
$ mount --rbind /proc /mnt/proc
$ mount --rbind /sys /mnt/sys
4)chroot
进旧机:
$ chroot /mnt
$ ls -lah /home/
total 32K
drwxr-xr-x 5 root root 4.0K Nov 11 2016 .
drwxr-xr-x 51 root root 4.0K Aug 7 10:06 ..
dr-x------ 5 daniel daniel 4.0K Aug 7 09:51 daniel
drwxr-xr-x 3 root root 4.0K Apr 26 2014 .ecryptfs <-- here is my ecryptfs stuff
drwx------ 2 root root 16K Apr 26 2014 lost+found
5) 确认我们有一个wrapped-passphrase
文件。此文件是使用原始登录密码登录所必需的。还有另一个东西叫做密码,我猜它是用于加密文件的原始密钥。在设置 ecryptfs 时,计算机会要求您写下密码,但我没有,所以我需要该文件。
ls -l /home/daniel/.ecryptfs/
total 20
-rw-r--r-- 1 daniel daniel 8192 Aug 7 10:43 auto-mount
-rw-r--r-- 1 daniel daniel 0 Apr 26 2014 auto-umount
-rw------- 1 daniel daniel 13 Apr 26 2014 Private.mnt
-rw------- 1 daniel daniel 34 Apr 26 2014 Private.sig
-rw------- 1 daniel daniel 58 Jul 8 2016 wrapped-passphrase <-- This file is important, make sure it exists and is not empty
6)现在使用包装的密码文件,我们可以使用登录密码恢复密码:
$ ecryptfs-unwrap-passphrase /home/daniel/.ecryptfs/wrapped-passphrase
Passphrase:
[ENTER YOUR LOGIN-PASSWORD]
<32 char alphanumerical all lowercase passpharse>
现在写下您的密码。你可能不需要它但如果你确实有,那么你现在就已经拥有它了。
7)现在我们需要将密码添加到内核密钥环,以便内核可以使用该密码解密我们的文件:
$ ecryptfs-insert-wrapped-passphrase-into-keyring /home/daniel/.ecryptfs/wrapped-passphrase
Passphrase:
[ENTER YOUR LOGIN-PASSWORD]
Inserted auth tok with sig [254199733df62f80] into the user session keyring
8) 现在,我们要挂载旧文件。为此,我们需要使用 sudo 成为原始用户:
$ sudo -u daniel bash
Signature not found in user keyring
Perhaps try the interactive 'ecryptfs-mount-private' <-- Just ignore this message, it cause the home has not yet been decrypted
$ whoami
daniel <-- make sure you are the original user!
9)现在我们可以挂载我们的主目录:
$ ecryptfs-mount-private
Enter your login passphrase:
[ENTER YOUR LOGIN-PASSWORD]
Inserted auth tok with sig [254199733df62f80] into the user session keyring
$ cd
$ ls
<All your old files should be there>
恭喜!您刚刚挂载了 ecryptfs 加密的主文件夹,并重新获得了对所有文件的访问权限。尽情享受吧!