シンボリックリンク/etc/my.cnf -> /app/program/my.cnfのSElinuxの設定

シンボリックリンク/etc/my.cnf -> /app/program/my.cnfのSElinuxの設定

MariaDBが選択した方法でSElinuxコンテキストを設定することができるかどうかを教えてください。

現在の構成:

ls -lZ /etc/my.cnf
lrwxrwxrwx. root root system_u:object_r:mysqld_etc_t:s0 /etc/my.cnf -> /app/program/cfg/mysql/etc/my.cnf

ls -lZ /app/program/cfg/mysql/etc/my.cnf
-rw-r--r--. root root system_u:object_r:default_t:s0   /app/program/cfg/mysql/etc/my.cnf

ls -l /app/program/cfg
lrwxrwxrwx. 1 user user 26 Jun 12 16:25 /app/program/cfg -> cfg-ver1

(2番目のファイルのコンテキストを何度も変更しましたが、成功しませんでした。)

現在、MariaDBを使用してこれを取得することはできませんが、うまくenforcing機能しますpermissive

!includeUPD:また、他の設定ファイルを含めるためにディレクティブを使用してみましたが、上記のようにパスに/etc/my.cnfシンボリックリンクが含まれている場合、MariaDBはそれを選択しません。

type=AVC msg=audit(1560419317.130:75): avc:  denied  { read } for  pid=4359 comm="mysqld" name="cfg" dev="xvda1" ino=205 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:default_t:s0 tclass=lnk_file permissive=0

        Was caused by:
                Missing type enforcement (TE) allow rule.

そしてcfgシンボリックリンクです。 /etc/my.cnfの次の行は機能します(ターゲットファイルの正しいSelinuxコンテキストを使用)。

!include /app/program/cfg-ver1/mysql/etc/my.cnf

実行後:

sudo chcon -t mysqld_etc_t /app/program/cfg/mysql/etc/my.cnf

次に続く:

[root@ip-172-31-60-102 etc]# ls -lZ my.cnf
lrwxrwxrwx. root root system_u:object_r:mysqld_etc_t:s0 my.cnf -> /app/program/cfg/mysql/etc/my.cnf
[root@ip-172-31-60-102 etc]# ls -lZ /app/program/cfg/mysql/etc/my.cnf
-rw-r--r--. root root system_u:object_r:mysqld_etc_t:s0 /app/program/cfg/mysql/etc/my.cnf

mariadb が再起動されましたが、設定ファイルが尊重されませんでした。

答え1

プロセスがファイルにアクセスできるようにするには、みんなファイルパスであるディレクトリには、プロセスがファイルを読み取ろうとするための適切な権限が必要です。これは、既存のUNIX権限とSELinuxコンテキストの両方に当てはまります。

従来の UNIX では、「適切な権限」は、xシンボリックリンクの権限ではなく、ディレクトリ内のビットのみを表します。

ただし、SELinuxコンテキストでは、ディレクトリに対する「検索」権限が必要な場合と同様に、シンボリックリンクに対する「読み取り」権限が必要です。

あなたの抜粋audit.logによれば、あなたのシンボリックリンクには、実行中の型がMariaDBで許可されていない型がcfgあります。default_tmysql_t

ファイルパスの一部であるシンボリックリンクchconにコマンドを適用してみてください。シンボリックリンクが参照するターゲットではなく、シンボリックリンク自体に適用するパラメータを指定します。cfg.cnf-hchcon

それは:

sudo chcon -ht mysqld_etc_t /app/program/cfg

すべてが期待どおりに機能する場合、SELinuxは常にこれらのディレクトリをMariaDB設定の一部として認識し、ディレクトリに対して自動的に作業を実行しないように、ディレクトリに一致する(一連の)正規表現を作成できます。あなたまたはSELinuxラベルを再割り当てしてください。

たとえば、次のようになります。

semanage fcontext -a -t mysqld_etc_t '/app/program/cfg.*(/.*)?'

以下に指定されたcfg*すべての項目が含まれています/app/program

必要なセキュリティレベルに応じて正規表現の範囲を絞り込むか、そのディレクトリの下のファイルに追加のコマンドを提供して、semanage fcontextよりカスタマイズされた構成を提供できます。

関連情報