0

ファイルが削除される前に、C プログラムによって生成されたいくつかの一時ファイルを細断処理したいと考えています。

現在、私は使用しています

system("shred /tmp/datafile");
system("rm /tmp/datafile");

プログラム内からですが、system関数を呼び出す代わりに最善の方法ではないと思います(間違っている場合は修正してください..)他にできる方法はありますか?コード自体からファイルをシュレッドするにはどうすればよいですか? 図書館か何か?また、削除部分についてですが、この回答でよろしいでしょうか?

4

2 に答える 2

3

これがこれを達成するための最良の方法ではないと思う理由をお聞きしてもよろしいですか? ファイルの内容を取り返しのつかないほど破壊することが本当に必要な場合、これは良い解決策のように思えます。

この方法の利点は次のとおりです。

  • プログラムは既に存在します (そのため、開発が速くなります)。と
  • プログラムはすでに信頼されています。

2つ目は重要なポイントです。ファイルを精巧にスクラブする必要性を誇張することは可能です (Peter Gutmann は、関連するウィキペディアのページで引用された発言の中で、彼の方法のいくつかの使用法を「ブードゥー」と説明しています)。しかし、それは問題ではありません。既存のツールは、ほとんどの場合、自家製のものを使用するよりも防御可能です。

を使用してあなたの現在のアプローチについて私がする唯一の批判については、でプログラムをsystem(3)検索するため、原則として、誰かがそれでゲームをプレイしていたずらをする可能性があるということです。しかし、これは簡単に対処できます。フル パスを使用して特定のバイナリを呼び出すには、andを使用します。shredPATHfork(2)execve(2)

とはいえ、これが片付けの影響の少ないビットである場合はmmap、ファイルを単純にして、ゼロをすばやく書き込む方がさらに簡単かもしれません。

于 2015-03-21T12:04:37.497 に答える