如何完全从系统中移除ecryptfs并删除.Private文件夹?

前几天我安装了ecryptfs,并使用它创建了一个私密目录。现在我的Ubuntu登录变得非常缓慢。我尝试从Synaptic中删除ecryptfs,但发现无法通过这种方式删除它。我在某个地方读到了关于这个命令的信息。
ecryptfs-setup-private --undo

但是这个命令在终端上显示的命令列表相当令人困惑。我不想搞乱我的安装,也不想丢失我的管理员账户。
现在我的问题是,我如何安全地删除/home/user/Private(.Private)并取消ecryptfs加密?

可能是如何停止使用内置的家目录加密?的重复问题。 - wesinat0r
3个回答

移除过程在ecryptfs-setup-private(1)实用程序中有记录,使用--undo选项:
$ ecryptfs-setup-private --undo

In the event that you want to remove your eCryptfs Private Directory setup,
you will need to very carefully perform the following actions manually:

 1. Obtain your Private directory mountpoint
   $ PRIVATE=`cat ~/.ecryptfs/Private.mnt 2>/dev/null || echo $HOME/Private`
 2. Ensure that you have moved all relevant data out of your $PRIVATE directory
 3. Unmount your encrypted private directory
   $ ecryptfs-umount-private
 4. Make your Private directory writable again
   $ chmod 700 $PRIVATE
 5. Remove $PRIVATE, ~/.Private, ~/.ecryptfs
    Note: THIS IS VERY PERMANENT, BE VERY CAREFUL
   $ rm -rf $PRIVATE ~/.Private ~/.ecryptfs
 6. Uninstall the utilities (this is specific to your Linux distribution)
   $ sudo apt-get remove ecryptfs-utils libecryptfs0

全面披露:我是eCryptfs的作者和维护者之一。

实际上,当你运行ecryptfs-setup-private --undo时,ecryptfs会非常明确地告诉你该怎么做,只需按照它的指示进行操作即可。

Obtain your Private directory mountpoint

$ PRIVATE=`cat ~/.ecryptfs/Private.mnt 2>/dev/null || echo $HOME/Private`
这个命令将$PRIVATE变量填充为您私有目录的路径。路径要么存储在~/.ecryptfs/Private.mnt文件中(其中~是您的主目录),要么如果该文件不存在,则会回退到~/Private路径。 然后,您可以运行echo $PRIVATE命令来验证PRIVATE变量的内容。 当您在下面的命令中看到$PRIVATE时,它将被替换为变量的内容,在您的情况下是~/Private。

确保您已经将所有相关数据从您的$PRIVATE目录中移出

这一点非常重要。

Unmount your encrypted private directory

$ ecryptfs-umount-private
eCryptFS是一种在用户空间挂载的文件系统(维基百科解释了关于挂载的内容)。这也是为什么私密文件夹不容易被移除的原因。可以将其视为一种代理,能够透明地加密和解密您的文件。此命令卸载文件夹,从而有效地禁用了加密功能。

Make your Private directory writable again

$ chmod 700 $PRIVATE

chmod设置文件权限。在这种情况下,你可以说:“使$PRIVATE中存储的文件/目录对我可读、可写和可执行(700)” - 除非你有写入权限,否则无法删除该目录。

Remove $PRIVATE, ~/.Private, ~/.ecryptfs

Note: THIS IS VERY PERMANENT, BE VERY CAREFUL

$ rm -rf $PRIVATE ~/.Private ~/.ecryptfs
这完全就是字面意思。`rm`命令代表删除,`-r`代表递归(递归删除目录),`f`代表强制(“别嘮叨了,直接删掉它”)。这将删除以下三个目录:$PRIVATE,~/.Private,~/.ecryptfs。
如果你愿意,你可以在Nautilus中手动删除这些目录(只需勾选“查看 > 显示隐藏文件”以查看主目录中的.Private和.ecryptfs目录)。

Uninstall the utilities (this is specific to your Linux distribution)

$ sudo apt-get remove ecryptfs-utils libecryptfs0
这将删除ecryptfs-utilslibecryptfs0。您可以从Synaptic中执行此操作,或者如果您想保留eCryptFS(例如为其他用户),也可以忽略它。
如果按照这些说明操作,不会有损坏系统或丢失文件的风险 - 当然,前提是您没有备份~/Private目录中的文件。

1你能解释一下这行代码的意思吗?"$ PRIVATE=cat ~/.ecryptfs/Private.mnt 2>/dev/null || echo $HOME/Private" - Curious Apprentice
1不要只是从终端复制命令。请提供这些命令的解释,如何使用它们,需要注意的措施等等。 - Curious Apprentice
我看到你真的很好奇。:) 我已经添加了这些命令的解释,如果有任何不清楚的地方,请随时提问。假设你使用的是标准配置,你不应该遇到任何问题。 - jnv
哦,是的!我很好奇:D。还有谢谢你努力解释清楚。现在你让我可以进一步提问,所以这是我需要了解更多的问题:为什么我需要使用$Private变量?我如何运行这个命令?我已经尝试复制粘贴它($ PRIVATE = cat〜/ .ecryptfs / Private.mnt 2> / dev / null || echo $ HOME / Private),但输出的是“$ Command Not Found!” - Curious Apprentice
下一件事是,为什么我需要将$Private设置为可写?它是保存路径的变量还是文件夹本身?我知道如何查看隐藏文件夹,并且私人目录会在我的登录时自动挂载。当我尝试删除ecryptfs和那个lib文件时,它显示一个错误,指出"设备正忙"。 - Curious Apprentice
在所有命令前加上$是一种常见的做法,它表示shell提示符(当你启动终端时,你实际上可以看到类似于username@computer:~$的东西)-有时也会使用%#,这意味着你应该以root身份运行以下命令。你不需要输入它,只需输入其后的内容即可。 - jnv
$PRIVATE变量仅用于缩短所有这些命令。它会被其内容替换,所以假设你运行以下命令:PRIVATE=/home/user/Private,然后运行chmod 700 $PRIVATE - chmod命令实际上会得到这样的结果:chmod 700 /home/user/Private;这被称为shell扩展。 - jnv
最后谈一下挂载的问题;在Unix中,你实际上是将东西挂载到文件夹中,~/Private是一个真实的目录,但它的解密内容由ecryptfs提供;当你写入这个文件夹时,与写入普通文件夹不同,是由ecryptfs守护程序进行写入。一旦你卸载ecryptfs,该文件夹仍然保持原位,但你没有写入权限 - 假设你不想在没有ecryptfs的情况下使用Private文件夹,除非你想删除它。 - jnv

我按照https://help.ubuntu.com/community/EncryptedPrivateDirectory#Using%20in%20conjunction%20with%20Auto-login中“如何删除加密的个人文件夹设置”一节所提供的说明进行操作。
注: - 你必须登录到正确的用户会话中,即你不想加密的那个。 - 备份私人文件夹(通常是/home/your-user-name/Private)中的所有数据。 - 删除ecryptfs(步骤5)是可选的,在前面的步骤中已经足够了。
如果你无法访问私人文件夹中的数据,或者文件名已经被加密,请按照以下步骤进行操作:
注意:这个过程是我自己找到的一个替代方法(在朋友的帮助下),因为我在论坛上看到的所有方法对我都不起作用。
  1. $ sudo ecryptfs-recover-private
  2. $ [sudo] 输入密码:"用户名"
  3. $ 信息:正在搜索加密的私有目录(可能需要一些时间)...
  4. 信息:找到 [/home/.ecryptfs/"用户名"/.Private]。
  5. 尝试恢复此目录?[Y/n]:Y
  6. 信息:找到您的wrapped-passphrase...
  7. 您是否知道您的登录密码?[Y/n]:Y
  8. 信息:输入您的登录密码... 密码:* "用户名" 的登录密码
  9. 已将带有签名 [xxxxxxxxxxxxxxx] 的auth tok插入用户会话密钥环
  10. 信息:成功!私有数据以只读方式挂载在 [/tmp/ecryptfs.yyyyyyyy]。
  11. $ sudo nautilus /tmp/ecryptfs.yyyyyyyy/

最后一个命令将打开文件夹 /tmp/ecryptfs.yyyyyyyy,您可以访问解密后的数据以进行备份。然后关闭文件夹和终端。


我可以访问私人文件夹,并且它会在启动时自动挂载。 - Curious Apprentice