对于商业用户:关系自己前程的vip客户资料、公司私密帐簿、自己的设计企划(这个东西好像经常被同事偷)——在这个举国黑客(使用黑客工具或出钱雇用黑客)的时代,不得不防啊。别遗恨终身~~
如果陈大哥学了我的教程,也不用为 私人照片的问题苦而恼了。
附加一点,ecryptfs 的解密层存在于内存,断电后不会留下任何痕迹(内存不足时可能会被写入硬盘交换文件区,通过特殊方法还是可以还原出这个交换区记录过的文件。如果你的资料特别要命,要么使用大内存,要么使用另一个软件加密交换文件区)。硬盘上面保存的只有加密数据。这样即使硬盘被偷了,使用数据还原软件也不可能得到 解密文件。
不是像普通的加密软件、压缩软件把 解密文件缓存于硬盘上(winrar就是个很好的例子,在windows下使用的是系统临时文件夹[位置是固定的],linux下好像是/tmp文件夹。只要有点常识找到这些解密数据不成问题)。你即使删除了,使用数据还原软件依然有可能得到 使用过的解密文件。你即使密码复杂到万位,也是白做工
先看看IBM 是怎么说的:http://www.ibm.com/developerworks/cn/li ... -ecryptfs/
使用的最大特点是:用户对加密文件夹的操作是无缝的,就像操作正常的文件夹一样。
其它的,比如加密级别高——即使硬盘被盗,也不会泄密。和系统整合性高,基于内核级,整体安全性高于普通软件。
首先,需要安装一下:
然后就可以开始使用了。因为很简单使用命令界面就能解决问题,所以没有图形界面。但是不用担心,我会把每一步讲解清楚。ecryptfs-utils
没有图形界面还有一个好处:隐蔽性高
使用举例(这里我是单独加密文件夹,而不是按网上流行的方式:把主文件夹加密。我认为这种操作简单、独立涉及的东西少。效率高,主要是安全。有人反应加密主文件夹后,必须使用其它未加密文件夹才能使用ecryptfs)
1,新建一个测试文件夹:ecryptfs_test
使用这个文件夹存放加密文件
命令:
代码: 全选
sudo mount -t ecryptfs ecryptfs_test ecryptfs_test
2,mount 需要root权限,我们使用 命令sudo ,来以root身份运行命令这里换一个命令说明一下real_path 是真实存放数据的地方;ecryptfs_mounted_path 是指你要把文件夹挂载于哪里(具体位置可以随意)sudo mount -t ecryptfs real_path ecryptfs_mounted_path
IBM 推荐:ecryptfs_mounted_path 和 真实目录 real_path 不一致,这样非授权用户不能通过原路径访问加密文件。
这里说一下挂载:很多人不理解
所谓挂载,可以理解为超级链接。比如说有两个文件夹 a,b。a中有文件isa,b中有文件isb。
现在我们要把a挂载于b上,命令:mount a b
此时b已经变成了a 的链接。所有对b的访问实际上都指向了a。
比如我们打开b文件夹,看到的文件只有isa,注意isb相当于被临时遮盖了。而打开a文件夹,文件还是isa
我们在b中存放一个新文件 isnew。
好了我们卸载这个挂载(取消这个超链接),命令:umount b
现在查看a文件夹,里面有文件isa isnew
查看b文件夹,里面只有isb
为使么说是超级链接呢,因为有个选项(其它选项我还不会) -t
它的意思是指定 文件夹类型(文件系统类型)。文件系统类型有很多,比如我们使用的ext4、ext3、fat32、ntfs……还有特殊的文件系统,比如 tmpfs(用内存 存文件)、ecryptfs(文件加密格)……
使用-t 就可以以指定文件格式进行“链接”,能查看、操作其它文件格式的文件了。这是普通连接做不到的。
结果如下:
passphrase:
(这是要你输入密码,自己编一个。一定要记住。另外密码是不会有任何显示的,输完回车就行)
select cipher:
(选择加密方式,不选默认是[aes]。最好记住自己的选择)
select key bytes:
(选择加密位数,不选默认是[16]。最好记住自己的选择)
enable plaintext passthrough(y/n) [n]:
(是否允许使用明文,默认是 n)
enable filename encryption (y/n) [n]:
(是否把文件名也进行加密,默认是 n。如果选择y,那么在没有解密 的情况下是无法列出文件夹内部的文件名的。)
如果设置的密码是第一次使用,它会提示你密码被标识为[799d2f922c0f1f26] 。当然,你的密码标识肯定不会是这个。并且告诉你挂载错误,因为/root/.ecryptfs/sig-cache.txt中没有相关记录,你可能输错密码了。开始让你选择:
Would you like to proceed with the mount (yes/no)? :
(你是否希望继续进行挂载。我们输入yes,来完成加密)
Would you like to append sig [799d2f922c0f1f26] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)?:
(你是否把密码标识加到/root/.ecryptfs/sig-cache.txt中,免得下次再报警。我们输入yes。当然可以输入no,这样你的密码标识就不会被记录,安全性上会更高一点)
3,好了,现在正常操作ecryptfs_test文件夹。
放一些文件来测试。
4,关闭解密
命令:
代码: 全选
sudo umount -t ecryptfs ecryptfs_test
那么对应的命令是sudo umount -t ecryptfs ecryptfs_mounted_path)
这命令是把挂载取消了。这里的作用相当于把解密取消了,毕竟把重要文件长时间解密放着不好。
好了,再看看ecryptfs_test文件夹,里面的文件是不是都无法正确打开了?
********连概念加内容 加操作都说了,就这么点。简单吧
需要解密文件夹时还是用命令:
代码: 全选
sudo mount -t ecryptfs ecryptfs_test ecryptfs_test
个人建议是不要使用同一位置的同一文件夹,很容易被猜测出文件内容,或者暴露被加密文件位置)
passphrase:
select cipher:
select key bytes:
enable plaintext passthrough(y/n) [n]:
enable filename encryption (y/n) [n]:
上面这几相当初怎么设置的就怎么填,之后文件夹就解密了。
不需要用了,还是用命令解除解密状态
代码: 全选
sudo umount -t ecryptfs ecryptfs_test
这里说一点,mount命令重启就失效了。如果你要关机了,不必使用sudo umount -t ecryptfs ecryptfs_test
命令了。因为再次开机,解密是失效的。必须重新运行命令sudo mount -t ecryptfs ecryptfs_test ecryptfs_test
欢迎讨论:cat650@163.com
*****************************************************
小技巧:让命令变简单
代码: 全选
alias
要设置一个别名,比如:令dir等同于ls -s
alias dir='ls -s'
取消别名
unalias dir
运用ecryptfs加密
alias topsc='sudo mount -t ecryptfs '
alias untopsc='sudo umount -t ecryptfs '
*****************************************
解答:
Would you like to proceed with the mount (yes/no)? : y
Would you like to proceed with the mount (yes/no)? : y
Would you like to proceed with the mount (yes/no)? : y
Would you like to proceed with the mount (yes/no)? : y
Would you like to proceed with the mount (yes/no)? : y
Aborting mount.
有人问这是什么意思:很简单,意思是,你希望继续挂载吗?如果想就输入 yes,看好是yes不是y。不想的话就输入no,不是n。
***************************************************************************
kde环境下,文件管理器右键集成脚本
注意以下命令运行于kde环境,gnome(ubuntu默认环境)请作相应更改
但命令行很不方便,特别是文件夹地址比较复杂时,来回输入命令太痛苦了。
本文的目的是调用一个简单的脚本,在文件夹右键添加按钮,处理加密、解密问题。
2.创建一个脚本,我们放在/bin中。其实放在哪里都可以,只是考虑到安全性还是放在系统文件夹中,以root用户创建。
sudo touch /bin/mountecryptfs.sh
3.编辑脚本
sudo kate /bin/mountecryptfs.sh
拷贝以下内容:
#!/bin/bash
# 本脚本运行由cat650制作,有问题联系cat650@163.com
# 脚本适用于kde环境,请提前安装ecryptfs-utils
count=0 ##初始值
dir="/tmp/mnt/ecryptfs$count" ##初始挂载点
echo "已挂载加密目录有:"
while df|grep -q $dir 2>/dev/null ##挂载点 是否使用了
do
echo $dir
let count=$count+1 ##一定要是/bin/bash如是/bin/sh这里就会出错
dir="/tmp/mnt/ecryptfs$count" ###新挂载点
done
echo "新增挂载目录:"$dir
echo "等待超级用授权"
if [ ! -d $dir ];then ##判断目录是否存在
sudo mkdir -p $dir ###建立新挂载点目录,选项p,可以创建连续文件夹
fi
echo "授权完成,开始加密……"
echo "请输入加密密码,选择加密方式:"
sudo mount -t ecryptfs "$1" $dir
echo "显示加密文件夹"
dolphin $dir
echo $dir"已处于加密状态"
read -p "是否自动卸载加密文件夹(yes?)" yn
if [ "$yn" != "yes" ]; then
echo "请记得手动解除加密"
echo "命令为:sudo umount /tmp/mnt/ecryptfs*"
read -p "回车退出" no
exit 0
fi
echo "去加密……"
sudo umount $dir
sudo rmdir $dir
## 下面删除缓存图片,这个大家自己设置。我把整个文件夹链到了/tmp.普通用户位置是:~/.thumbnails/
rm -r /tmp/large/
rm -r /tmp/normal/
echo "处于加密状态的文件夹有:"
df|grep "tmp/mnt"
read -p "请验证是否已解除加密,回车退出" no
4.把这个脚本变为可执行
sudo dolphin /bin
找到脚本,属性改为可执行。
5.用dolphin打开任意文件夹。文件夹右键,属性,类型旁有个小扳手。
添加。选择程序,找到/bin/mountecryptfs.sh
选择并移动到最底。
选择,编辑。应用程序,高级选项:在终端中运行。这步必须有,要不无法进行加密操作。
6.测试
在/tmp文件夹中新建一个文件夹,右键,动作,选择mountecryptfs.sh(或者你自己命名的名字)。
好了,在新跳出的文件管理器中,添加一些文件、写点字。
在终端输入yes,让脚本自动卸载加密。
此时,文件管理器刷新后应该为空且不可编辑。
回到我们新建的文件夹中,那些新添的东西应该无法识别。
((((((((((((((((((((((((gnome环境下脚本(ubuntu默认环境)
#!/bin/bash
# 本脚本运行由cat650制作,有问题联系cat650@163.com
# 脚本适用于gnome环境,请提前安装ecryptfs-utils
count=0 ##初始值
dir="/tmp/mnt/ecryptfs$count" ##初始挂载点
echo "已挂载加密目录有:"
while df|grep -q $dir 2>/dev/null ##挂载点 是否使用了
do
echo $dir
let count=$count+1 ##一定要是/bin/bash如是/bin/sh这里就会出错
dir="/tmp/mnt/ecryptfs$count" ###新挂载点
done
echo "新增挂载目录:"$dir
echo "等待超级用授权"
if [ ! -d $dir ];then ##判断目录是否存在
sudo mkdir -p $dir ###建立新挂载点目录,选项p,可以创建连续文件夹
fi
echo "授权完成,开始加密……"
echo "请输入加密密码,选择加密方式:"
sudo mount -t ecryptfs "$1" $dir
echo "显示加密文件夹"
gnome $dir
echo $dir"已处于加密状态"
read -p "是否自动卸载加密文件夹(yes?)" yn
if [ "$yn" != "yes" ]; then
echo "请记得手动解除加密"
echo "命令为:sudo umount /tmp/mnt/ecryptfs*"
read -p "回车退出" no
exit 0
fi
echo "去加密……"
sudo umount $dir
sudo rmdir $dir
## 下面删除缓存图片,这个大家自己设置。我把整个文件夹链到了/tmp.普通用户位置是:~/.thumbnails/
rm -r /tmp/large/
rm -r /tmp/normal/
echo "处于加密状态的文件夹有:"
df|grep "tmp/mnt"
read -p "请验证是否已解除加密,回车退出" no