[原创]BSD下rm彻底删除文件及注意事项_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2780 | 回复: 0   主题: [原创]BSD下rm彻底删除文件及注意事项        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2014-10-19 12:10:58 | [全部帖] [楼主帖] 楼主

在Windows下,有许多种“粉碎机”软件,这些软件的目的,就是防止文件被恢复。这些软件的大致原理是用“零(0x00)”或者“1(0xff)”多次写一个文件,从而使被删除的文件无法恢复,或者是恢复出来的只是没有意义的0或1。

FreeBSD其实自带这个功能,只不过它只写三遍:先写一遍0xff,也就是全是1,再写一遍0x00,也就是全0,然后再写一遍0xff,这样三遍下来,可恢复的机率就非常渺茫了,甚至对于这个特定的文件来说,已经没有恢复的价值,有几个特例下面再谈。

man rm,有一个非常特别的参数:

-P Overwrite regular files before deleting them. Files are over-written three times, first with the byte pattern 0xff, then 0x00, and then 0xff again, before they are deleted. Files with multiple links will not be overwritten nor deleted and a warning will be issued. If the -f option is specified, files with multiple links will also be overwritten and deleted. No warning will be issued. Specifying this flag for a read only file will cause rm to generate an error message and exit. The file will not be removed or overwritten.
N.B.: The -P flag is not considered a security feature (see BUGS).


大致意思是,对于一个普通的文件,在删除之前先进行三次覆写:第一遍用0xff,第二遍用0x00,第三次再用0xff。对于多次被链接的文件,则产生一个错误,并且不再删除,如果指定的-f参数,则多次被链接的文件也将被删除。

按照该文档,经过rm以后的文件,基本上不可以恢复了。

但是本节最后一句还加了个提醒,说有个BUG,我们继续看这个BUG:

BUGS
The -P option assumes that the underlying storage overwrites file blocks when data is written to an existing offset. Several factors including the file system and its backing store could defeat this assumption. This includes, but is not limited to file systems that use a Copy-On-Write strategy (e.g. ZFS or UFS when snapshots are being used), Flash media that are using a wear leveling algorithm, or when the backing datastore does journaling, etc. In addition, only regular files are overwritten, other types of files are not.


这段的大致意思是:-P参数使用有个假设的前提,就是底层的存储系统会把覆盖的数据写在原来的位置上。有几种系统不是这样的,比如Copy-On-Write(COW)的系统,最典型的就是ZFS和开启了快照系统的UFS,还有Flash设备,或者是其他有journaling的设备。

那么COW系统是什么意思呢?大致讲,COW的系统,就是在覆盖文件的时候,系统并不把它存在原来的位置,而是重新找了一个地方存了一个新的文件,原来的那个文件仍然在原来的位置,并没有被从磁盘上抹掉,甚至连原来的文件名都还在,只不过不显示而已。在这种情况下,rm –P把那个文件写了三次,只不过相当于在磁盘上新建了三个纯0或1的文件而已,原来的文件仍然存在,是可以恢复的。

Flash的一些设备,包括SSD,存储的原理也不是在原来的位置重写,而是换了另一个地方,这是因为Flash设备长期写一个区域的话,很快就会把这块区域“写穿”,所以写的时候要均衡一下整个存储的区域,这也导致rm –P会失效。

其实在恢复的时候,还有另外一个问题:这个文件虽然被删除了,但是相关的一些操作很可能还在存储中,比如vi的swap文件,这片区域周围一些残留的片段等信息,都会给恢复提供一定的信息,当然这些获取这些信息的代价是比较高的。

所以整体上讲,rm –P在目前的环境下,并不是一个很好的工具,因为现在使用的系统,大多数都是Copy-On-Write的,导致了rm –P没有了用武之地。

该贴由hui.chen转至本版2014-11-5 17:04:53




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论