最新の Red Hat ベースの Linux ディストリビューション (RHEL、CentOS) には、 Security Enhanced Linux (SELinux) がインストールされ、既定で enforcing
に設定されています。 SELinux は Linux のセキュリティ強化であり、管理者はアクセス制御をより詳細に制御できます。 Azure CycleCloud は既定で SELinux をサポートしていますが、多数の HPC アプリケーションをサポートするために、CycleCloud は管理者の SELinux 環境を変更します。
HPC クラスターと SELinux
多くの Azure CycleCloud HPC クラスターでは、共有 NFS ホーム ディレクトリを使用して、ジョブの送信やコンピューティング ノード間での情報の共有を容易にします。 共有ホーム ディレクトリを使用するクラスターには、PBS Pro、Grid Engine、Slurm があります。
既定の SELinux ホーム ディレクトリ ポリシーでは、NFS マウントまたはホーム ディレクトリに 対して /home 以外のものを使用できなくなります。 このため、 ユーザー管理 が有効になっている場合、CycleCloud は、非標準 の /shared/home ディレクトリと NFS ホーム ディレクトリの両方を許可するために必要なコマンドを自動的に実行します。
非標準のホーム ディレクトリを有効にするには、次のコマンドを実行して、セキュリティ コンテキストを /home から /shared/home にコピーし、新しいホーム ディレクトリでセキュリティ コンテキストを再帰的にリセットします。
semanage fcontext -a -e /home /shared/home
restorecon -R /shared/home
注
一般に、ほとんどの HPC クラスターのプライマリ ノードは、すべての execute
ノードのホーム ディレクトリとして使用されるファイルシステムをエクスポートします。 この場合、 /shared/home はプライマリ ノード上の NFS マウントではなく、/ mnt/exports/shared/home (NFS 経由でエクスポートされるディレクトリ) へのシンボリック リンクです。
注
一般に、ほとんどの HPC クラスターの scheduler
ノードは、すべての execute
ノードのホーム ディレクトリとして使用されるファイルシステムをエクスポートします。 この場合、 /shared/home は scheduler
ノード上の NFS マウントではなく、/ mnt/exports/shared/home (NFS 経由でエクスポートされたディレクトリ) へのシンボリック リンクです。
共有ファイルシステムをマウントする VM の場合、ユーザーが VM にサインインできるように、NFS ホーム ディレクトリを明示的に有効にする必要があります。
setsebool -P use_nfs_home_dirs 1
上記のコマンドを実行するために、オペレーティング システムは、まだインストールされていない場合に一部のパッケージをインストールします。
policycoreutils
パッケージには、restorecon
コマンドとsetsebool
コマンドが用意されています。
policycoreutils-python
または policycoreutils-python-utils
パッケージは、OS のバージョンに応じて、semanage
コマンドを提供します。
注
ほとんどの Azure CycleCloud クラスターでは、クラスターのホーム ディレクトリとして /shared/home が使用されますが、一部の構成では別のパスが使用されます。 その場合は、 /shared/home ではなく代替パスを使用して同じコマンドを実行します。
SELinux の無効化
場合によっては、SELinux が原因でアプリケーションが正しく動作しない場合があります。 デバッグを容易にするために、CycleCloud を使用すると、クラスター管理者は次の構成オプションを使用して SELinux モードを permissive
または disabled
に設定できます。
cyclecloud.selinux.policy = permissive # or `disabled`
OS レベルで SELinux ポリシーを変更するには、 setenforce 0
コマンドを使用して SELinux を一時的に permissive
モードに設定します。 次に、 /etc/selinux/config ファイルを変更して、SELinux モードを完全に変更します。
setenforce
を実行するには、libselinux-utils
パッケージがまだ OS にインストールされていない場合はインストールします。
重要
SELinux を無効に設定した後、SELinux を完全に無効にするには、VM を再起動する必要があります。 VM は、再起動するまで制限されないモードのままです。