CentOSでSELinuxを有効化無効化する方法

CentOSでSELinuxを有効化無効化する方法

アンドロイドアプリでカメラで撮影と同時に画像をサーバにアップロードしたかったのですが、うまくできなかったので一旦SE Linuxを無効にしました。

紆余曲折あり、サーバにアップロードできたので今度はSE Linuxが有効の状態で画像をサーバにアップロードできるかを試したいのでSE Linuxについてまとめてみました。

SELinuxの有効無効の確認

getenforceで現状のSE Linuxの状態を確認します。

[root@localhost ~]# getenforce
Disabled

Disabledと表示されたら、無効になっています。sestatusコマンドでも確認することができます。

[root@localhost ~]# sestatus
SELinux status: disabled

では恒久的に有効にしてみます。恒久的に有効にするには/etc/selinux/configに設定を記述する必要があります。

[root@localhost ~]# vi /etc/selinux/config
SELINUX=enforcing

enforcingにすることにより有効化になります。ただしリブートが必要です。

ちなみに無効化するにはdisabledとします。

[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled

これもリブートが必要です。

[root@localhost ~]# systemctl reboot

これでシステムを再起動します。

permissiveにすることもできます。

参考サイト

permissiveモード

開発時などは無効化せずにpermissiveモードにしつつ、運用時にenforceにすればよいと思います。

permissiveモードではログを出力してくれるので、ログを見ながら開発すればよいと思います。デバッグモードみたいな感じでしょうか。

ログは以下にあります。ここをtailしながら見ておけばよいと思います。

/var/log/audit/audit.log

以下のコマンドでSELinuxで拒否されたログを見ることもできます。

ausearch -m avc

今日のログだけを見る場合は-ts todayを付けます。

ausearch -m avc -ts today

setools-console

setools-consoleをインストールしましょう。

yum install -y setools-console

これでsesearchコマンドなどが使えるようになります。

使い方は以下のような感じです。

[root@localhost ~]# sesearch --allow -t httpd_t /etc/selinux/targeted/policy/policy.31

タイプを変更する

タイプを変更するには、chconコマンドを使います。/var/www/htmlのように既存ディレクトリの場合はrestoreconコマンドで変更することができます。

[root@localhost ~]# ls -laZ /var/www/html
drwxrwxrwx. root root system_u:object_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 ..
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 index2.html

restoreconコマンドを実行します。

[root@localhost ~]# restorecon -RF /var/www/html/

これでタイプがhttpd_sys_content_tに変更されます。

[root@localhost ~]# ls -alZ /var/www/html
drwxrwxrwx. root root system_u:object_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 ..
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index2.html

ファイアウォールを無効化する

ファイアウォールも有効にしたり無効にしたりしてみます。

[root@localhost ~]# firewall-cmd --list-all
FirewallD is not running

ファイアウォールを有効にします。

[root@localhost services]# systemctl start firewalld.service

これで有効になります。

[root@localhost services]# systemctl stop firewalld.service

これで無効になります。

ポートを開放する

ポートを開放するには以下のようにします。以下は8080を開放する例です。

firewall-cmd --zone=public --add-port=8080/tcp --permanent

--permanentをつけることによって恒久的に開放します。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました