Security-Enhanced Linux(SELinux)は、システム上の多くのリソースに対して必須アクセス制御(MAC)システムを構成するためのフレームワークを提供するLinuxカー これは、RHEL、CentOS、Fedora、および他の同様のLinuxディストリビューションを含む一部のLinuxディストリビューションでデフォルトで有効になっています。 SELinuxは、これらのリソースにアクセスするように設定されていない限り、プログラムがファイル、ディレクトリ、またはポートにアクセスできないようにします。SELinuxが有効になっているかどうかを確認するには、getenforce
コマンドを実行します。 たとえば、次のようにします。
getenforce
Mysqldを一時的にPermissiveモードにする
SELinuxが原因と思われる問題をトラブルシューティングするときは、mysqld_t
を一時的にpermissiveモードにするのに役立ちます。 これは、semanage
コマンドを実行することによって行うことができます。 例えば:それが問題を解決した場合、現在のSELinuxポリシーが原因であることを意味します。 MariaDBのSELinuxポリシーまたはラベルを調整する必要があります。
サーバーのSELinuxポリシーのビルドとロード
MariaDBサーバーには、デフォルトでビルドまたはロードされないSELinuxポリシーが付属しています。 多くのシステムでは、ポリシーは/usr/share/mysql/policy/selinux/mariadb-server.fc
にインストールされます。 これをビルドしてロードするには、次のように実行します。
ファイルコンテキストの設定
SELinuxは、そのファイルにアクセスできるユーザーを決定する方法としてファイルコンテキストを使用します。
ファイルコンテキストは、semanage fcontext
restorecon
コマンドで管理されます。
多くのシステムでは、semanage
policycoreutils-python
restorecon
policycoreutils
パッケージによってインストールされます。 これらは次のコマンドでインストールできます。
sudo yum install policycoreutils policycoreutils-python
ファイルまたはディレクトリの現在のコンテキストは、ls
--context
--scontext
オプションで実行することで確認できます。
データディレクトリのファイルコンテキストの設定
datadir
にカスタムディレクトリを使用する場合は、そのディレクトリのフ MariaDBデータファイルのSELinuxファイルコンテキストはmysqld_db_t
datadir
semanage fcontext
restorecon
--context
--scontext
ls
を実行 例えば:
ls --directory --scontext /mariadb/data
ログファイルのファイルコンテキストの設定
ログファイルにカスタムディレクトリを使用する場合は、そのディレ MariaDBログファイルのSELinuxファイルコンテキストはmysqld_log_t
semanage fcontext
restorecon
コマンドを実行 たとえば、次のようにします。
sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql
現在のファイルコンテキストを確認したい場合は、ls
--context
--scontext
オプションで実行することで行うことができます。 例えば:
ls --directory --scontext /var/log/mysql
オプションファイルのファイルコンテキストの設定
オプションファイルにカスタムディレクトリを使用する場合は、その MariaDBオプションファイルのSELinuxファイルコンテキストはmysqld_etc_t
semanage fcontext
restorecon
コマンドを実行 たとえば、次のようにします。
sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb
現在のファイルコンテキストをチェックしたい場合は、ls
--context
--scontext
オプションで実行します。 例えば:p>
ls --directory --scontext /etc/mariadb
Tmpfsファイルコンテキストへのアクセスを許可する
tmpdir
tmpfs
tmpfs
tmpfs
tmpfs
tmpfs
tmpfs
tmpfs
tmpdir
/run/shm
の場合、mysqld_t
がいくつかのtmpfs関連のファイルコンテキストにアクセスできるようにする必要がある場合があります。 例:
Selinuxの問題のトラブルシューティング
次のような場合には、SELinux関連の問題のトラブルシューティングが必要になる場合があります。
- MariaDBはデフォルト以外のポートを使用しています。
- MariaDBは、一部のファイル(datadir、ログファイル、オプションファイルなど)からの読み取りまたは書き込みを行っています。)デフォルト以外のパスにあります。
- MariaDBは、既定のインストールでは使用されないリソースへのアクセスを必要とするプラグインを使用しています。
ファイルシステム権限エラー
一部のMariaDBディレクトリのファイルシステム権限は正常に見えますが、MariaDBエラーログに次のようなエラーが残ってい:
これに似たエントリがある場合は、ほとんどの場合、ファイルまたはディレクトリのファイルコンテキストを調整する必要があります。 その方法の詳細については、「ファイルコンテキストの設定」を参照してください。
別のポート上のSELinuxとMariaDB
TCPポートとUDPポートもバインドの許可が有効になっています。 別のポート、または一部のGaleraポートを使用している場合は、これらのポートを使用できるようにSELinuxを設定します。
sudo semanage port -a -t mysqld_port_t -p tcp 3307
audit2allowを使用したSELinuxポリシーの生成
場合によっては、MariaDBシステムに非標準のポリシーが必要になることがあります。 これらのポリシーは、audit2allow
ユーティリティを使用してSELinux監査ログから作成することができます。 semanage
semodule
ユーティリティも必要になります。
多くのシステムでは、audit2allow
semanage
policycoreutils-python
semodule
policycoreutils
によってインストールされます。パッケージ。 これらは次のコマンドでインストールできます:
sudo yum install policycoreutils policycoreutils-python
次のプロセスを使用して、監査ログからポリシーを生成できます。
- ポリシーからdontauditsを削除します。
sudo semodule -DB
- 一時的に
mysqld_t
パーミッシブモードにします。 たとえば、次のようにします。
sudo semanage permissive -a mysqld_t
- MariaDBを開始します。
- SELinuxエラーの原因となっていたものは何でもしてください。生成された監査ログを使用してポリシーを作成します。
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
- Pull
mysqld_t
permissiveモードから取り出します。 例えば:
sudo semanage permissive -d mysqld_t
- ポリシーのdontauditsを復元します。
sudo setmodule -B
MariaDBが起動してもSELinuxが正常に機能しない場合は、同じ手順を使用できます。 たとえば、SELinuxはPAMプラグインがユーザーを認証するのを防ぐことができます。 解決策は同じです-監査を有効にし、permissiveに切り替え、SELinuxが許可しなかったことを実行し、監査ログからポリシーを作成します。
必要なSELinux権限を発見したら、すべてのユーザーが作業の恩恵を受けることができるように、オペレーティングシステムのバグ追跡に必要な権限を報告してください(例:Red Hat Bugzillahttps://bugzilla.redhat.com/)。