现象:
最近遇到一件怪事。
在我们的一台windows服务器上,我执行了一个拷贝操作:从资源服务器拷贝一些文件替换掉该windows服务器上的旧版文件。然而拷贝操作总是执行失败,细看后发现,有少许文件无法完成替换。
这些无法替换的文件有如下现象:
1. 此类文件有图片、也有文本文件,其图标上面显示了一把锁,似乎是被加密了。
2. 双击此类文件,文件无法打开,对应的程序提示“你似乎没有权限查看此文件...”,按照提示,好像是由于当前系统用户没有这些文件的读取权限。
3. 右键属性查看文件的权限情况,发现权限没有异常,当前系统用户拥有文件的全部控制权限。
4. 拷贝、剪切此类文件,无法执行成功,但可以成功执行删除操作。
5. 该windows服务器仅仅是一个文件中转站,以上这些文件都在另一台linux服务器上有备份,是过去某个时候从该windows服务器对拷过去的,从linux服务器上把对应的文件拉取下来,发现可以正常打开,且通过AntHelper分析,其与windows上的文件存在差异。
最后,右键查看文件的高级属性发现,发现此类文件勾选了“加密内容以便保护数据”选项,这应该就是罪魁祸首了。于是取消勾选,再次查看文件,问题依旧,再次查看文件的高级属性,显示该选项并没有取消,也就是说,无法取消该选项。继续查看该选项的详细信息,上面显示了可访问该文件的用户。这就表明,这一加密方式与操作系统的用户是有关联的。
恍然大悟,当前使用的windows用户是在几个月前新建的,于是将系统切换至可访问这些文件的老用户,终于可以正常打开文件,也可以取消勾选“加密内容以便保护数据”选项了。至于这些文件是何时,由何人勾选了文件的加密选项,已不可查。
以上提及的加密选项,其实就是windows的加密文件系统EFS。
加密文件系统(英语:Encrypting File System,缩写EFS)是微软Windows在NTFS 3.0中引入的一个功能,它提供文件系统级加密。此技术使文件支持透明加密以保护机密数据免受具有物理访问权限的攻击者侵害。
EFS从Windows 2000起在所有为商业环境开发的Windows版本中可用。默认情况下,不会有文件被加密,但用户可以选择加密各文件、各文件夹和各驱动器。有些EFS设置可通过Windows域环境中的组策略强制执行。经过EFS加密后的文件,只有设置加密的当前系统用户可以解密,同一个系统里边的其他用户无法正常解密;如果存放加密文件的载体被其他系统挂载,例如被盗,这些文件也是无法正常解密的。
加密操作
在NTFS分区的目录或文件下,右击要加密的文件或文件夹;单击“属性”,在“常规”选项卡上,单击“高级”;在弹出的窗口中,勾选“加密内容以便保护数据”复选框;点击“确定”即可。被EFS加密的文件或文件夹在资源管理器中会显示为绿色,或者显示一把锁。
加密对用户是透明的,文件加密之后,用户不必手动解密,解密操作由操作系统在底层完成,这对于使用这些文件的用户和程序都是无感的,例如将这些被加密的文件拷贝至另外的FAT32格式的驱动器,或者网络其他位置,拷贝时将自动获得解密后的文件流(这里有一个认知上不好理解的地方:拷贝后的文件和源文件是形成了差异,源文件是经过加密的,而拷贝后的文件则是未加密的)。
加密解除
清除该文件的属性中的“加密内容...”复选框即可。
备份密钥
EFS加密操作简单,它既保护了数据,但也造成了数据丢失的风险。
1. 如果用户重装了操作系统,将无法打开EFS加密文件。
2. 如果用户删除了当前用户(包括帐户的配置文件),启用了新的系统用户,也将无法打开EFS加密文件。
因此用户应该及时备份EFS加密密钥。