长话短说,我有一些,呃,敏感的我想保护这些数据不被他人窥探。假设这些数据位于我桌面上的一个文件夹中,名为My Secrets
。
但是,我想保留某种方法来销毁这些数据,使其无法恢复,这样就不可能恢复,而且没有任何证据表明这些数据曾经存在过。
我希望能够保留我的 Ubuntu 安装以及任何/所有非敏感数据,因此彻底销毁(遗憾的是)不是一个选择。
我如何在 Ubuntu 中实现这一点?
理想情况下,我还希望能够立即触发删除操作,从此我的数据(至少是部分)被销毁,无法阻止。我还愿意使用需要设置的解决方案(例如,对于任何未来需要存储的数据)。
答案1
shred
GNUcoreutils
就是专为此目的而设计的。
从man shred
:
反复覆盖指定的文件,以使甚至非常昂贵的硬件探测也更难恢复数据。
shred
实际上从中读取随机字节/dev/urandom
并用这些字节覆盖文件内容,最后可选择用零覆盖内容(来自/dev/zero
)。因此,如果您想重新发明轮子,您可以手动完成此操作,但最好使用shred
已经针对该任务进行了优化的版本。
例如,对于任何给定的文件my_secured_file.txt
,您可以执行以下操作:
shred my_secured_file.txt
这里:
-v
详细程度-z
随后用零覆盖文件,以隐藏粉碎-n 5
表示迭代次数,默认为 3
尽管默认值已经足够,但如果您愿意,可以增加迭代次数,甚至可以删除文件(-u
,--remove
)。
查看man shred
。
对文件进行shred
操作,对目录中的所有文件执行操作(递归),例如my_secret_dir
:
shopt -s globstar
for f in my_secret_dir/**/*; do shred -vzn 5 -- "$f"; done
或者find
:
find my_secret_dir -type f -exec shred -vzn 5 -- {} +
笔记:
shred
有一个警告,即它无法在日志记录、缓存、RAID、压缩文件系统上正常工作。引用man shred
:
警告:请注意,Shred 依赖于一个非常重要的假设:文件系统会就地覆盖数据。这是传统的处理方式,但许多现代文件系统设计并不满足这一假设。以下是 Shred 无效或不能保证在所有文件系统模式下都有效的文件系统示例:
日志结构或日志文件系统,例如 AIX 和 Solaris 提供的系统(以及 JFS、ReiserFS、XFS、Ext3 等)
写入冗余数据并即使某些写入失败也能继续运行的文件系统,例如基于 RAID 的文件系统
制作快照的文件系统,例如 Network Appliance 的 NFS 服务器
在临时位置缓存的文件系统,例如 NFS 版本 3 客户端
压缩文件系统
对于 ext3 文件系统,上述免责声明仅适用于 data=journal 模式(因此 shred 的效果有限),该模式除了记录元数据外,还记录文件数据。在 data=ordered(默认)和 data=writeback 模式下,shred 均可正常工作。可以通过在 /etc/fstab 文件中为特定文件系统的挂载选项添加 data=something 选项来更改 ext3 日志模式,如挂载手册页(man mount)中所述。
此外,文件系统备份和远程镜像可能包含无法删除的文件副本,并且可以稍后恢复被粉碎的文件。
在 Ubuntu 中,如果您使用的ext4
文件系统也是日志文件系统,则日志模式是元数据的默认模式,而不是数据的默认模式(data=ordered
是默认模式),因此shred
除非您更改了默认模式,否则您应该使用 -ing 获得预期的结果。
附注:您可以通过以下方式找到默认文件系统选项:
sudo dumpe2fs -h /partition |& grep 'Filesystem features'
例子:
% sudo dumpe2fs -h /dev/sda3 |& grep 'Filesystem features'
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
表示has_journal
这是一个日志 FS,并且默认日志选项为:
% sudo dumpe2fs -h /dev/sda3 |& grep 'Journal features'
Journal features: journal_incompat_revoke
同时进行以下操作:
% sudo dumpe2fs -h /dev/sda3 |& grep 'features'
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Journal features: journal_incompat_revoke
答案2
以下是一个不寻常的建议:存储敏感数据仅有的在加密的、密码锁定的云存储中,没有快捷方式文件夹在您的计算机上(即不要安装 Dropbox 或类似程序,因为它们会创建远程存储的本地镜像)——只需在您的浏览器中添加书签即可。当您想要删除本地系统上敏感数据的证据时,请删除书签并清除浏览器历史记录(或者,理想情况下,使用高安全性浏览器变体或设置,每次关闭时都会自动清除历史记录)。十秒钟左右,任何人都无法知道从哪里开始查找,除非进行法医级别的完整系统搜索(除非您是国际间谍或儿童色情贩子,否则极不可能)。