【问题标题】:Preventing Linux from adding file into memory cache?防止Linux将文件添加到内存缓存中?
【发布时间】:2011-02-15 20:20:32
【问题描述】:

我希望你们都看过精彩的网站,Linux Ate My Ram。这通常很好,但它给我带来了一个问题。我有一个安全文件,我用gpg 解密,然后读入内存进行处理。未加密的文件稍后会被删除,但我确实希望将解密的文件保存在 Linux 的内存文件缓存中。

有没有办法明确阻止文件从 Linux 的缓存中保存?

谢谢!

【问题讨论】:

    标签: linux caching memory file-io linux-kernel


    【解决方案1】:

    使用gpg -d,这将导致GPG将文件输出到STDOUT,这样你就可以把它全部放在内存中了。

    根据您的偏执程度,您可能还想使用mlock

    【讨论】:

    • 对此答案+1。如果您真的想要安全,您应该使用 mlock/mlockall 防止包含您的秘密文本的页面被交换到磁盘。
    • 感谢您的回答。我确实知道gpg -d,但由于奇怪的环境原因,我需要将文件写入磁盘,所以这并不能帮助我解决我的问题。
    【解决方案2】:

    如果您真的非常需要将 gpg 的输出作为文件,您可以将该文件放在 ramfs 文件系统上。该文件的内容将只存在于不可交换的内存页中。

    您可以通过运行(以 root 身份)将 ramfs 文件系统附加到您的树:

    mount none /your/mnt/point -t ramfs
    

    您可能还听说过 tmpfs。它的相似之处在于它的文件没有永久存储,并且通常只存在于 RAM 中。但是,为了您的使用,您希望避免使用此文件系统,因为 tmpfs 文件可以交换到磁盘。

    【讨论】:

      【解决方案3】:

      当然。删除文件时切碎文件。

      shred -u $FILE
      

      当然,它不能直接回答您的问题,但我仍然认为这是一个解决方案——缓存中的任何内容现在都是随机生成的垃圾。 :-)

      【讨论】:

      • 我正要说一下 shred 如何不能保证日志文件系统上的正常功能,但是由于您只对刷新内存缓存感兴趣,所以可能没关系。
      • shred(1) 将告诉您,当与 NFS、日志 FS 或 RAID 阵列一起使用时,不一定会从磁盘中清除文件。
      • @Nathan Kidd:您可能是对的,但是将敏感数据留在磁盘上而不是在 RAM 中会带来更大的安全风险。
      • @larsmans:他专门询问了磁盘cache。当然,在更大的安全形势下,这是一个错误的问题。 :)
      • 大家好,我假设该文件也会被安全删除,因此感谢您对 shred 的提醒。
      猜你喜欢
      • 2020-11-16
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2020-11-18
      • 1970-01-01
      相关资源
      最近更新 更多