Ubuntu:如何在不重新安装的情况下解密主目录、交换(基本上所有内容)?

Bar*_*ter 1 ubuntu encryption home-directory ecryptfs

我刚刚在 Ubuntu Server 10.04 中遇到了加密主目录的问题。

虽然我知道一种解决方法,但我只想从所有内容中完全删除加密。

任何提示如何在没有完整备份和重新安装的情况下做到这一点?

Ham*_*ner 5

本指南是一项相当大的手术,只有在您对命令行有信心的情况下才能遵循它 - 一些错误可能会导致丢失所有数据。

您必须将所有文件从您的主目录复制到其他地方,然后在关闭加密后将它们复制回来,但您不必重新安装。因此,假设您在/media/disk-1. 你可以备份

$ cp -a /home/user /media/disk-1/
Run Code Online (Sandbox Code Playgroud)

-a做递归和多一点。确保备份所有用户,因为我们稍后将删除加密副本。

然后你需要卸载 ecryptfs 挂载,删除所有加密文件,停止自动挂载并将所有文件复制回来。如果您使用 GUI 登录,这将造成严重破坏,因此我要么注销,然后登录其中一个控制台(按 Ctrl-Alt-F1 访问一个),要么从 Live CD/ USB 记忆棒来做到这一点。无论哪种方式,请确保您的备份是安全的。

如果您使用的是 Live CD,则需要挂载磁盘,以下命令中的路径将相应更改。

因此,卸载 ecryptfs 挂载。(如果您使用的是 Live CD,则无需执行此步骤)。

$ ecryptfs-umount-private
Run Code Online (Sandbox Code Playgroud)

接下来通过删除所有旧的加密文件在磁盘上腾出空间。在执行此操作之前,请确保您的备份是安全的。如果您有一半以上的磁盘备用,您可以离开这一步,直到您确定新版本可以正常工作。但是,如果您只有一点磁盘备用,那么您需要在将文件复制回来之前执行此操作。

$ sudo rm -rf /home/.ecryptfs
Run Code Online (Sandbox Code Playgroud)

接下来我们需要停止自动挂载。所以编辑文件

/etc/pam.d/common-auth 
/etc/pam.d/common-password 
/etc/pam.d/common-session 
/etc/pam.d/common-session-noninteractive
Run Code Online (Sandbox Code Playgroud)

pam_ecryptfs通过#在行的开头放置 a 来注释掉提到的行。例如,common-session现在将包含

#session    optional    pam_ecryptfs.so unwrap
Run Code Online (Sandbox Code Playgroud)

现在您可以将所有文件复制回来

$ cp -a /media/disk-1/user /home
Run Code Online (Sandbox Code Playgroud)

然后重新启动,您应该没有加密文件夹,并且能够启用自动登录。如果您之前没有删除/home/.ecryptfs,那么一旦您确信一切都按预期工作,就应该这样做。