SELinuxをサポートしていないLinuxシステム(Arch Linux)があります。私のシステムでこれらのサポートを設定したくありません。これで、ファイルにいくつかのSELinuxコンテキストが設定されたext4ボリュームイメージがあります。一部のファイルのコンテキストを読み、変更する必要があります。このイメージをインストールしてls -lZ
操作すると、?
コンテキストの代わりにが表示されます。
システム全体でSELinuxを有効にしていない場合は、ファイルのSELinuxコンテキストにどのようにアクセスして変更しますか?これが不可能な場合はシステム全体には影響しませんが、インストールされたイメージ内でコンテキストを変更できる最小のSELinux構成は何ですか?
答え1
SELinux コンテキストはファイルの拡張属性 ( xattr
, man 5 attr
) に格納されます。core/attr
これを使用するためのツールはソフトウェアパッケージに付属しています。
SELinuxコンテキストを使用して属性を取得できますgetfattr
。しかし、注意することがあります。デフォルトでは、名前空間の属性のみが一覧getfattr
表示user.
されます。必要な属性は名前空間にselinux
あります。したがって、すべての名前空間の属性を要求するには、オプションを渡すsecurity
必要があります(値と名前のダンプなど)。-m -
-d
$ getfattr -m - -d bin/sh
# file: bin/sh
security.selinux="u:object_r:system_file:s0"
selinuxコンテキストを変更するためにsetfattr
root権限を必要とするツールを使用しました。
$ sudo setfattr -n security.selinux -v u:object_r:shell_exec:s0 bin/sh
$ getfattr -m - -d bin/sh
# file: bin/sh
security.selinux="u:object_r:shell_exec:s0"