【发布时间】:2011-02-15 20:20:32
【问题描述】:
我希望你们都看过精彩的网站,Linux Ate My Ram。这通常很好,但它给我带来了一个问题。我有一个安全文件,我用gpg 解密,然后读入内存进行处理。未加密的文件稍后会被删除,但我确实不希望将解密的文件保存在 Linux 的内存文件缓存中。
有没有办法明确阻止文件从 Linux 的缓存中保存?
谢谢!
【问题讨论】:
标签: linux caching memory file-io linux-kernel
我希望你们都看过精彩的网站,Linux Ate My Ram。这通常很好,但它给我带来了一个问题。我有一个安全文件,我用gpg 解密,然后读入内存进行处理。未加密的文件稍后会被删除,但我确实不希望将解密的文件保存在 Linux 的内存文件缓存中。
有没有办法明确阻止文件从 Linux 的缓存中保存?
谢谢!
【问题讨论】:
标签: linux caching memory file-io linux-kernel
使用gpg -d,这将导致GPG将文件输出到STDOUT,这样你就可以把它全部放在内存中了。
根据您的偏执程度,您可能还想使用mlock。
【讨论】:
gpg -d,但由于奇怪的环境原因,我需要将文件写入磁盘,所以这并不能帮助我解决我的问题。
如果您真的非常需要将 gpg 的输出作为文件,您可以将该文件放在 ramfs 文件系统上。该文件的内容将只存在于不可交换的内存页中。
您可以通过运行(以 root 身份)将 ramfs 文件系统附加到您的树:
mount none /your/mnt/point -t ramfs
您可能还听说过 tmpfs。它的相似之处在于它的文件没有永久存储,并且通常只存在于 RAM 中。但是,为了您的使用,您希望避免使用此文件系统,因为 tmpfs 文件可以交换到磁盘。
【讨论】:
当然。删除文件时切碎文件。
shred -u $FILE
当然,它不能直接回答您的问题,但我仍然认为这是一个解决方案——缓存中的任何内容现在都是随机生成的垃圾。 :-)
【讨论】:
shred(1) 将告诉您,当与 NFS、日志 FS 或 RAID 阵列一起使用时,不一定会从磁盘中清除文件。