0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SELinux を Disabled / Permissive に変更する方法と、コンテキストの確認・編集方法

0
Last updated at Posted at 2025-10-11

はじめに

SELinux には主に 3 つの状態があります。

  • Enforcing: ポリシーを強制適用する
  • Permissive: アクセス拒否はせず、ログだけ記録する
  • Disabled: SELinux 自体を無効化する

まずは現在の状態を確認します。

getenforce
sestatus

SELinux を Disabled にする方法

SELinux を完全に無効化する方法です。
方法は 設定ファイル変更カーネルパラメータ変更 の 2 つがあります。

1. 設定ファイル変更で Disabled にする

grep SELINUX /etc/selinux/config
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
grep SELINUX /etc/selinux/config
reboot
getenforce

期待値

Disabled

2. カーネルパラメータで Disabled にする

getenforce
grubby --update-kernel ALL --args selinux=0
reboot
getenforce

期待値

Disabled

SELinux を Permissive にする方法

SELinux を無効化せず、拒否せずにログだけ記録するモードにする方法です。
切り分けやデバッグでは、Disabled より Permissive のほうが使いやすいことが多いです。

1. 一時的に Permissive にする

再起動すると元に戻ります。

setenforce 0
getenforce

期待値

Permissive

Enforcing に戻す場合:

setenforce 1
getenforce

2. 設定ファイル変更で Permissive にする

永続的に Permissive にしたい場合です。

grep SELINUX /etc/selinux/config
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
grep SELINUX /etc/selinux/config
reboot
getenforce

期待値

Permissive

3. カーネルパラメータで Permissive にする

起動時から Permissive にしたい場合です。

grubby --update-kernel ALL --args enforcing=0
reboot
getenforce

期待値

Permissive

元に戻す場合:

grubby --update-kernel ALL --remove-args enforcing=0
reboot

SELinux コンテキストの確認方法

ファイルやディレクトリには SELinux コンテキストが付いています。
確認には ls -Z を使います。

ファイル・ディレクトリの確認

ls -lZ /var/www/html/
ls -ldZ /var/www/html/

例:

-rw-r--r--. 1 root root system_u:object_r:httpd_sys_content_t:s0 index.html

このうち、特に重要なのは type です。
上の例では httpd_sys_content_t が type です。


拡張属性としての確認

attr -l /var/www/html/
Attribute "selinux" has a 41 byte value for /var/www/html/

getfattr -d -m - /var/www/html/
security.selinux="system_u:object_r:httpd_sys_content_t:s0"

SELinux コンテキストの編集方法

コンテキストの編集には、主に次の 3 つを使います。

  • chcon: 一時的に変更する
  • semanage fcontext: 永続的なルールを定義する
  • restorecon: 正しい既定値に戻す

1. 一時的に変更する: chcon

chcon -t httpd_sys_content_t /web/index.html
chcon -R -t httpd_sys_content_t /web

これは一時変更です。
restorecon を実行すると元に戻ることがあります。


2. 永続的に変更する: semanage fcontext

semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?'
restorecon -R -v /web

確認:

semanage fcontext -C -l

削除:

semanage fcontext -d '/web(/.*)?'
restorecon -R -v /web

3. 正しいラベルに戻す: restorecon

restorecon -v /path/to/file
restorecon -R -v /path/to/directory

コピーや手動変更でラベルが崩れたときに使います。


SELinux コンテキストの削除

SELinux を Disabled にしたあと、ラベル自体を削除したい場合の手順です。

1. コンテキスト確認

ls -lZ /var/www/html/
attr -l /var/www/html/

2. 特定ファイル・ディレクトリのコンテキスト削除

setfattr -x security.selinux /var/www/html/

3. 再帰的に削除

find /path/to/directory -exec setfattr -x security.selinux {} \;

ただし、実運用では 削除より restorecon や semanage fcontext で正しく直すほうが一般的です。


コンテナで使う SELinux コンテキスト

コンテナでは通常の httpd_sys_content_t とは別に、コンテナ向けの type が使われます。

代表例:

  • container_file_t
  • container_ro_file_t

1. Podman の :z / :Z

ホストのディレクトリをコンテナにマウントするとき、ラベルを調整できます。

podman run -v /srv/data:/data:z IMAGE
podman run -v /srv/private:/data:Z IMAGE
  • :z → 複数コンテナで共有しやすいラベル
  • :Z → そのコンテナ専用ラベル

2. 読み取り専用でマウントする

「コンテナから読み込みだけできればよい」場合は、SELinux ラベルだけでなく ro マウントも併用します。

podman run -v /srv/config:/config:ro,Z IMAGE
  • ro → 読み取り専用マウント
  • Z → コンテナ用ラベルに調整

3. 手動でコンテナ向けラベルを付ける

chcon -Rt container_file_t /srv/container-data

永続化するなら:

semanage fcontext -a -t container_file_t '/srv/container-data(/.*)?'
restorecon -R -v /srv/container-data

読み取り専用コンテンツ向け:

semanage fcontext -a -t container_ro_file_t '/srv/container-ro(/.*)?'
restorecon -R -v /srv/container-ro

補足

SELinux モード一覧

  • Enforcing: SELinux ポリシーを強制適用
  • Permissive: 違反をログ記録するが許可
  • Disabled: SELinux 無効

よく使う一時変更

setenforce 0  # Permissive
setenforce 1  # Enforcing

カーネルパラメータの意味

  • selinux=0 → Disabled
  • enforcing=0 → Permissive

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?