
SELinuxをサポートするコードを書いています。私はこのセキュリティモジュールに初めて触れ、学習曲線が急になります。
私のコードがSELinux環境で動作するには、ファイルにラベルを付け直すことができる必要があります。たとえば、一時ファイルシステムをマウントしてマウントした後、元のラベルを復元したいとします。
明らかに、インストール部分(CAP_SYS_ADMIN機能を含む)ではルートでなければなりませんが、ラベルリダイレクト部分ではルートでなければなりませんか?
Fedoraでは、自分が所有しているファイルのラベルを再指定できます。たとえば、権限のないユーザーとして、次のことができます。
$ touch /tmp/test
$ ls -Z /tmp/test
unconfined_u:object_r:user_tmp_t:s0 /tmp/test
$ chcon system_u:object_r:etc_t:s0 /tmp/test
$ ls -Z /tmp/test
system_u:object_r:etc_t:s0 /tmp/test
他のユーザーが所有するファイルにラベルを再割り当てする権限がないようです。
しかし、今RedHatで以下を見つけました。手動:
SELinux ポリシーは、ユーザーが特定のファイルの SELinux コンテキストを変更できるかどうかを制御します。
これは、この動作が実際に設定可能であり、私が所有しているファイルにラベルを再割り当てできると信じられないことを示しているようです。
編集する:
Fedoraはconstraints
。
# dnf install setools-console
# seinfo --constrain
...
constrain file {relabelto create relabelfrom } (u1 == u2 or ( t1 == can_change_object_identity ));
...