ハードディスク上の1つのディレクトリ(ログファイル)へのアクセスをいくつかのプロセス(たとえば、1つのプロセスのログファイル)に制限したい。すべてのプロセスは同じユーザーで実行されるため、ファイルシステムのアクセス制限はオプションではありません。
私のオプションは何ですか? AppArmor? SELinux?
単一のプロセスを制限したくありません。いくつかの選択したプロセスを除いて、すべてのプロセスがディレクトリにアクセスするのを制限したいのです。 AppArmorではそれができないようです。
利点-はい、SELinuxでこれを行うことができます。欠点は、SELinuxを知っている必要があることです。 :)
これらのプロセスは、異なるSELinuxドメインで実行できます。例えば。 2つのプロセスを「privapp」と「unprivapp」と呼びましょう-同じユーザーとして実行しているにもかかわらず、privappは/ var/lib/app/logにアクセスでき、unprivappは/ var/lib/app/logにアクセスできません。
したがって、2つのドメインprivapp_t
およびunprivapp_t
を作成し、実行可能ファイルにprivapp_exec_t
およびunprivapp_exec_t
というラベルを付けます。次に、/ var/lib/app/logにvar_lib_privapp_rw_t
のラベルを付け、privapp_t
として実行されているプロセスのみがそれにアクセスできることを示します。
これは簡単な部分です。難しい部分は、上記をポリシー言語で表現することです。これは、成長した男性と女性を涙に駆り立てることが知られているビットです。 :)
あなたがたった一人のユーザーだけでそれを成し遂げることができるとは思いません。私が考えることができるあなたが話していることに最も近いものはAndroidがそれを行う方法です、そしてそれは単に各プロセスがそれ自身のユーザーの下で実行されるため、それはそれだけにアクセスすることができるということですアクセスを許可するファイルとそれらのプロセスのファイルプロセス自体は、私が知っているどのシステムでも強力なIDではありません。
リモートのsyslogを調べることをお勧めします。このようにして、ログを削除したり改ざんしたりできないようにすることができます。