web-dev-qa-db-ja.com

Linux上の特定のディレクトリへのアクセスを制限する

ハードディスク上の1つのディレクトリ(ログファイル)へのアクセスをいくつかのプロセス(たとえば、1つのプロセスのログファイル)に制限したい。すべてのプロセスは同じユーザーで実行されるため、ファイルシステムのアクセス制限はオプションではありません。

私のオプションは何ですか? AppArmor? SELinux?

単一のプロセスを制限したくありません。いくつかの選択したプロセスを除いて、すべてのプロセスがディレクトリにアクセスするのを制限したいのです。 AppArmorではそれができないようです。

8
leoluk

利点-はい、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として実行されているプロセスのみがそれにアクセスできることを示します。

これは簡単な部分です。難しい部分は、上記をポリシー言語で表現することです。これは、成長した男性と女性を涙に駆り立てることが知られているビットです。 :)

7
mricon

あなたがたった一人のユーザーだけでそれを成し遂げることができるとは思いません。私が考えることができるあなたが話していることに最も近いものはAndroidがそれを行う方法です、そしてそれは単に各プロセスがそれ自身のユーザーの下で実行されるため、それはそれだけにアクセスすることができるということですアクセスを許可するファイルとそれらのプロセスのファイルプロセス自体は、私が知っているどのシステムでも強力なIDではありません。

1
AJ Henderson

リモートのsyslogを調べることをお勧めします。このようにして、ログを削除したり改ざんしたりできないようにすることができます。

1
Lucas Kauffman