我想删除linux ext4文件系统上的一个文件,这样磁盘就不包含文件的名称(空闲空间、文件系统元数据或其他任何地方)。
例如,我不希望磁盘上有一个名为"passwords.txt“的文件。
我有一种不同的形式的在超级用户上发布了这个问题,没有人成功地回答过它。
我更喜欢使用/usr/bin/shred。它可以很好地删除文件的数据,但是文件的名称仍然可以在磁盘上看到。下面是我测试它的方法:
dd if=/dev/zero of=fs bs=1M count=300
hexdump -C fs # verify it's empty
mkfs.ext4 fs
mkdir m
sudo mount fs m
sudo chown -R $USER m
cd m
echo secretkey > passwords.txt
cd ..
sudo umount m
grep secretkey fs # <== shows up as expected
grep passwords.txt fs
strings fs | grep sec
strings fs | grep pass
sudo mount fs m
cd m
/usr/bin/shred -vuz -n 1 passwords.txt
cd ..
sudo umount m
grep secretkey fs # <== does not show up, this is good
grep passwords.txt fs # <== PROBLEM: filename still shows
strings fs | grep sec
strings fs | grep pass # <== problem: still shows up
hexdump -C fs | grep sec
hexdump -C fs | grep pass下面是mount命令的输出,它显示了一些文件系统的模式:
type ext4 (rw,relatime,data=ordered)将文件从passwords.txt重命名为类似于"asdfasdf.txt“之类的随机内容,然后再分解它并不能解决问题。当您在详细模式下运行/usr/bin/shred时,您将看到它在截断/取消文件链接之前经过一系列文件重命名。我认为这是一种安全删除文件名痕迹的方法。为了支持这一点,文件系统需要启用某些模式吗?我将复制/粘贴shred's输出在文件删除过程中的样子:
/usr/bin/shred: passwords.txt: pass 1/2 (random)...
/usr/bin/shred: passwords.txt: pass 2/2 (000000)...
/usr/bin/shred: passwords.txt: removing
/usr/bin/shred: passwords.txt: renamed to 0000000000000
/usr/bin/shred: 0000000000000: renamed to 000000000000
/usr/bin/shred: 000000000000: renamed to 00000000000
/usr/bin/shred: 00000000000: renamed to 0000000000
/usr/bin/shred: 0000000000: renamed to 000000000
/usr/bin/shred: 000000000: renamed to 00000000
/usr/bin/shred: 00000000: renamed to 0000000
/usr/bin/shred: 0000000: renamed to 000000
/usr/bin/shred: 000000: renamed to 00000
/usr/bin/shred: 00000: renamed to 0000
/usr/bin/shred: 0000: renamed to 000
/usr/bin/shred: 000: renamed to 00
/usr/bin/shred: 00: renamed to 0
/usr/bin/shred: passwords.txt: removed发布于 2019-09-23 07:28:54
文件名存储在具有“(字符串)文件名”和相应的"(int) inode“值的”目录“数据结构中。该目录负责将文件名映射到inode,并将inode映射到磁盘上的扇区。文件名不会像文件内容那样保存在磁盘的扇区上。
文件名和目录结构有以下含义:
因此,将文件重命名为随机文件实际上应该会使名称永久消失,除非您有备份系统进行定期备份--在这种情况下,您也必须处理这些备份。
https://serverfault.com/questions/985078
复制相似问题