私は現在Thunderbirdとgnupgを使って暗号化された電子メールを読んでいます。スワッピングの動作を正しく理解すると、復号化された電子メールを含むメモリページをスワッピングしてハードドライブにトレイルを残すことができ、理論的には後で法医学を通じて回復することができます。
暗号化されたスワップファイルの使用中または重要なファイルの使用中にグローバルにスワップを無効にすることは確かに可能ですが、パフォーマンスに影響を与え、忘れてしまい、root権限が必要です。
特定のファイルやプログラムを交換不可能としてマークできますか?ルートアクセスなしで可能ですか?技術的に熟練したユーザーに配布でき、メモリの内容がディスクに交換されないアプリケーションを作成することは可能ですか?
ベストアンサー1
コメントでは、cgroupを作成しmemory.swappiness
(スワッピングを最小限に抑えるために)0に設定し、その中でアプリケーションを実行することを提案しました。これにより、アプリケーションはおそらく物理メモリが不足しているため、そのcgroup内のプログラムのページをスワップすることが十分な物理メモリを確保する唯一の方法でなければ、スワップは発生しません。
RHEL 6.5でこれを行うには:
パッケージがインストールされていることを確認してください
libcgroup
。これにより、cgcreate
などのユーザースペースツールにアクセスできますcgexec
。cgconfig
再起動後もcgroup設定の変更が維持されるようにサービスを開始して有効にします。 RHELでは、このサービスは/cgroup
ツリーの下に必要なファイルシステムもマウントする必要があります。次のコマンドを使用してcgroupを作成します。
cgcreate -g memory:thunderbird
このグループの交換性を0に設定します。
cgset -r memory.swappiness=0 thunderbird
cgsnapshot -s > /etc/cgconfig.conf
サービスの更新された永続構成を保存するために使用されますcgconfig
(これまでの変更はすべて実行時の変更でした。デフォルトの構成ファイルをどこかに保存して永続構成にする前に一度確認できます。cgexec
これで、cgroupで目的のアプリケーションを起動できますthunderbird
。[root@xxx601 ~]# cgexec -g メモリ: Thunderbird ls
anaconda-ks.cfg a.out foreman.log index.html install.log install.log.syslog node.pp sleep sleep.c SSLビルドスタックテスト
[ルート@xxx601〜]#
実際にインストールしていないか、インストールした可能性がありthunderbird
ます。上記の形式がなぜ混乱しているのかよくわかりません。
別の方法
cgexec
は、Thunderbirdを起動し、PIDをtasks
アプリケーションファイルに追加することです。たとえば、[root@xxx601 ~]# 猫 /cgroup/memory/thunderbird/tasks
[root@xxx601~]# pidof httpd
25926 10227 10226 10225 10163 10162 10161 10160 10159 10157 10156 10155 10152 10109
[root@xxx601 ~]# echo 25926 > /cgroup/memory/thunderbird/tasks
[root@xxx601 ~]# 猫 /cgroup/memory/thunderbird/tasks
25926
繰り返しますが、これが技術的にスワップを防ぐわけではありませんが、アプリケーション自体を変更しないことはおそらく最良の選択肢でしょう。私はmemory.memsw.limit_in_bytes
これが強制的な存在をより直接的に制御できるように見えることを発見しました。いいえ交換しましたが、問題が完全に解決されたと言えるほど十分に試みませんでした。つまり、これは後で見ることができます。
実際の答えは、mlock
これらの問題を解決するためにアプリケーションに機密情報を提供することです。それでもThunderbirdのようなアプリはこれをやろうと思っていますが、それについてコメントするのに十分な内部についてはわかりません。