RHEL9のマニュアルを見ていると、SELinuxを無効にするのではなく、「Permissive」モードを使用することを強く推奨されています。
そのため、SELinuxを「Permissive」モードにして変更して使ってみます。

2.5. SELinux の無効化 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.
検証した環境
$ cat /etc/os-release
NAME="AlmaLinux"
VERSION="8.7 (Stone Smilodon)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.7"
PLATFORM_ID="platform:el8"
PRETTY_NAME="AlmaLinux 8.7 (Stone Smilodon)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:8::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8"
ALMALINUX_MANTISBT_PROJECT_VERSION="8.7"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.7"
$ uname -r
4.18.0-425.3.1.el8.x86_64
SELinuxのモード
SELinuxには、下記の3つのモードがあります。
モード | 要約 |
---|---|
enforcing(強制する) | SELinux セキュリティ ポリシーが適用される。 |
permissive(寛大な) | SELinux は強制する代わりに警告を出力する。 |
disabled(無効) | SELinux ポリシーはロードされない。 |
SELinuxをPermissiveモードに変更
前提条件
$ dnf list selinux-policy-targeted libselinux-utils policycoreutils
Last metadata expiration check: 0:00:49 ago on Sun Mar 19 23:23:06 2023.
Installed Packages
libselinux-utils.x86_64 2.9-6.el8 @anaconda ・・・ インストールされていること
policycoreutils.x86_64 2.9-20.el8 @anaconda ・・・ インストールされていること
selinux-policy-targeted.noarch 3.14.3-108.el8 @anaconda ・・・ インストールされていること
Available Packages
selinux-policy-targeted.noarch 3.14.3-108.el8_7.1 baseos
$ cat /proc/cmdline ・・・カーネルパラメータで「selinux=0」や「enforce=0」がないこと
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-425.3.1.el8.x86_64 root=/dev/mapper/vg00-lvroot ro crashkernel=auto resume=/dev/mapper/vg00-lvswap rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap rhgb quiet
設定変更前の状態
$ getenforce
Enforcing ・・・ 初期インストール時はセキュリティポリシーが適用された状態
設定ファイルの変更
$ sudo cp -a /etc/selinux/config /etc/selinux/BK-config.original
$ sudo vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded. ・・・ RHEL9は設定しても無効にならない
SELINUX=permissive ・・・ 「enforcing」から「permissive」に変更
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
マシンリブート
$ sudo systemctl reboot
設定変更後の状態
$ getenforce
Permissive
$ sestatus ・・・ こちらでも確認できる
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
SELinuxをDisabledモードに変更
「SELinuxは使わない。」という場合、完全に無効化する方法です。
RHEL9では、selinuxを無効化にすることを推奨していません。永続的に無効化したい場合は、Permissiveモードを利用することを強く推奨されています。
変更前の状態
$ cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-425.3.1.el8.x86_64 root=/dev/mapper/vg00-lvroot ro crashkernel=auto resume=/dev/mapper/vg00-lvswap rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap rhgb quiet
$ getenforce
Enforcing
カーネルパラメータの変更
$ sudo grubby --update-kernel=ALL --args=selinux=0
マシンリブート
$ sudo systemctl reboot
変更後の状態
$ cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-425.3.1.el8.x86_64 root=/dev/mapper/almalinux-root ro crashkernel=auto resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap rhgb quiet selinux=0
$ getenforce
Disabled
パーミッションの横にある「.(ドット)」も気になるようであれば削除
パーミッションの横にある「.(ドット)」は、SELinuxの拡張属性が設定されている意味です。当然、SELinuxの無効化を行ったあとに、作成されたものには付きません。
$ ls -l ・・・ パーミッションの横にある「.(ドット)」があることを確認
total 24
lrwxrwxrwx. 1 root root 7 Oct 9 2021 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Mar 20 00:47 boot
drwxr-xr-x 19 root root 3100 Mar 20 01:06 dev
drwxr-xr-x. 142 root root 8192 Mar 20 01:06 etc
drwxr-xr-x. 3 root root 21 Mar 20 00:43 home
lrwxrwxrwx. 1 root root 7 Oct 9 2021 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct 9 2021 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Oct 9 2021 media
drwxr-xr-x. 2 root root 6 Oct 9 2021 mnt
drwxr-xr-x. 2 root root 6 Oct 9 2021 opt
dr-xr-xr-x 301 root root 0 Mar 20 01:06 proc
dr-xr-x---. 4 root root 190 Mar 20 00:51 root
drwxr-xr-x 40 root root 1140 Mar 20 01:08 run
lrwxrwxrwx. 1 root root 8 Oct 9 2021 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Oct 9 2021 srv
dr-xr-xr-x 13 root root 0 Mar 20 01:06 sys
drwxrwxrwt. 17 root root 4096 Mar 20 01:16 tmp
drwxr-xr-x. 13 root root 158 Mar 20 00:37 usr
drwxr-xr-x. 21 root root 4096 Mar 20 00:46 var
$ sudo find / -exec setfattr -h -x security.selinux {} \; ・・・ エラーが出ても気にしない
: (省略)
$ ls -l ・・・ パーミッションの横にある「.(ドット)」がないことを確認
total 24
lrwxrwxrwx 1 root root 7 Oct 9 2021 bin -> usr/bin
dr-xr-xr-x 5 root root 4096 Mar 20 00:47 boot
drwxr-xr-x 19 root root 3100 Mar 20 01:06 dev
drwxr-xr-x 142 root root 8192 Mar 20 01:06 etc
drwxr-xr-x 3 root root 21 Mar 20 00:43 home
lrwxrwxrwx 1 root root 7 Oct 9 2021 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Oct 9 2021 lib64 -> usr/lib64
drwxr-xr-x 2 root root 6 Oct 9 2021 media
drwxr-xr-x 2 root root 6 Oct 9 2021 mnt
drwxr-xr-x 2 root root 6 Oct 9 2021 opt
dr-xr-xr-x 297 root root 0 Mar 20 01:06 proc
dr-xr-x--- 4 root root 190 Mar 20 00:51 root
drwxr-xr-x 40 root root 1140 Mar 20 01:08 run
lrwxrwxrwx 1 root root 8 Oct 9 2021 sbin -> usr/sbin
drwxr-xr-x 2 root root 6 Oct 9 2021 srv
dr-xr-xr-x 13 root root 0 Mar 20 01:22 sys
drwxrwxrwt 16 root root 4096 Mar 20 01:23 tmp
drwxr-xr-x 13 root root 158 Mar 20 00:37 usr
drwxr-xr-x 21 root root 4096 Mar 20 00:46 var