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
をつけることによって恒久的に開放します。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント