在按照本人博文恢复ecryptfs加密主目录时,总有一些莫名其妙的问题,其中遇到的最多的还是最后出现的
Error mounting eCryptfs:[-2] No such file or directory
往往让人摸不着头脑。在这里,我想将在ubuntu中选择ecryptfs加密主目录后此软件的基本运作讲一讲,以解惑同好。

ecryptfs加密不同于普通软件的加密方式,通俗的讲,就是其不会对某个文件或者目录直接进行加解密操作。比方说,ubuntu中使用系统自带的pgp加密一个文件,会生成一个被加密文件的副本,解密一个被加密的php文件,也会生成一个被解密文件的副本,原文件不动。ecryptfs的加、解密操作是通过mount来进行的。我可以新建一个目录,然后用ecryptfs加密的方式mount其自身,在mount的过程中输入密码,成功后此目录就是一个处于解密态的目录了(为了方便,我为此写过一个右键加、解密脚本,有需要的可以写信给我,大家可以共同研究一下,可能更加直观)。在当前用户看来,此目录和其它目录几乎没有任何不同之处,唯一的差别是同分区往里面移动文件的速度变慢了,因为有一个后台加密的过程在进行(在加密每一个文件,并且在其头部写入解密时用的验证信息)。此目录可以手动umount,也会在当前用户注销时自动umount。由于是mount自身,umount后目录名称不会有任何变化,但其中的文件却是处于加密态的。根据当初mount此目录时使用的加密选项,里面的文件名分为明文和密文两种情况,文件是一定被加密了的。只有再次使用相同的mount方式,包括各种参数,密码,才可以让此目录再次正常可用,否则里面的文件不会正常解密的,即使拷贝出来也不行,拷贝到哪里都不行。这里有一点需要特别注意的是,再次mount的过程当中,只要操作过程不出现错误,其它诸如参数、密码等如果弄错了,是不会有错误提示的。等于是你用新的参数、密码将这个目录再次mount了一次,虽然原来的加密文件没有被正常解密,但此时此目录却是另一种状态的解密态了,或者按照物理学的说法,是相同物质在不同相位的表现。在这里也揭露了一个问题,那就是ecryptfs这个软件不仅能够叠加加密(即一个目录或者文件被mount多层),甚至可以混杂加密(在一个目录中的文件需要通过多次不同方式的mount过程中才能完全解密)。话题扯远了,但我想应该讲清楚的事情已经说完了。
在ubuntu中选择ecryptfs加密主目录后,其实就是选择的将整个用户的主目录都用ecryptfs的方式mount起来,不过在这里不是mount的主目录自身,而是将 /home/.ecryptfs/用户名/.Private目录mount为/home/用户名 目录,即主目录。系统在用户登录时自动完成这一过程——使用各项默认参数、自动输入加密密码等。这样就出现了一个问题,加密密码保存在哪里?它保存在/home/.ecryptfs/用记名/.ecryptfs/wrapped-passphrase文件中,这个文件本身也是被加密的,需要用户的登录密码来解密,从而得到加密密码的明文,用来自动mount用户主目录。这也就是说,如果系统重新安装后,忘记了将已经加密的主目录中的文件拷贝出来,只要wrapped-passphrase文件还在,就可以得到当初的加密密码,解密主目录不会有任何问题。但有个前提,如果再次安装系统时仍然选择的是加密主目录,并使用同一用户名,且没有事先备份加密密码或者wrapped-passphrase文件,这个文件有可能被替换掉,这一点要特别注意。此文件中生成的密码是一个比较长的随机字符串,有人说创造同样的装机环境,同一用户名所生成的wraped-passphrase文件是相同的,可能吗?如果想避免这种错误,或者不想记录这么长的随机字符串,可以事先备份wrapped-passphrase文件,或者更改这个加密密码。对,这个密码是可以随用户心意更改的。
得到这个密码后,就是用这个密码为用ecryptfs方式将/home/.ecryptfs/用户名/.Private目录mount为任何目录了,只要过程不错,此目录就应该可以解密了。甚至/home/.ecryptfs/用户名/.Private目录中的文件不全,哪怕将其中的文件单独拷贝一个出来到其它目录中,再mount那个目录,同样可以进行解密操作。ecryptfs的灵活可见一斑。
ps:最近不断有朋友提问,严格按照博文操作后还是会遇到Error mounting eCryptfs:[-2] No such file or directory 的问题,在此时可以检查一下你的当前用户权限,看其能否正常访问 /home/.ecryptfs/被加密的目录名/.ecryptfs 以及 /home/.ecryptfs/被加密的目录名/.Private这两个目录。这些朋友在访问/home/.ecryptfs/被加密的目录名/.ecryptfs/wrapped-passphrase文件时,因为遇到权限不够,往往切换到root下进行操作,这本无可厚非,但是在最后 mount /home/.ecryptfs/被加密的目录名/.ecryptfs/.Private目录时却仍然在当前用户下,前面的权限不够知道切换,后面的权限当然也不会够,没有权限当然mount失败。要么给权限,要么干脆在root下操作完好了。怎么能够忘记呢?
此文对于ecryptfs的深层次应用并未讨,在此仅抛砖引玉,共同进步。
转载请注明来自 LiZhenyu.Com五百年
本文地址:http://www.lizhenyu.com/about-ecryptfs-encrypted-home-directory.html

1 条评论

cat650 · 2010年5月25日 11:51

我也使用了ecryptfs 。 但是 因为出于效率等的考虑,并没有选择加密整个目录。而是建了一个加密的文件夹。也就是说不存在~/.ecryptfs/.Private这类目录
看了你的文章,好像你说:使用mount命令时,只要所有参数正确。即使把整个加密文件夹复制到其它机器上也能正常解密。
是这样吗?
passphrase 当时输入了一个密码。后来 给了一
Would you like to append sig [799d2f922c0f1f26] to
[/root/.ecryptfs/sig-cache.txt]
不知道[799d2f922c0f1f26]是不是你所说的“生成的密码是一个比较长的随机字符串”
希望你到我的博客,发表看法

评论已关闭。