【Linux】権限は問題ないのに「Permission denied」と出てコマンドが実行できない。
はじめに
業務で新サービスを立ち上げる際に、構成管理はプロビジョニングツールを使います。
最近はプロビジョニングツール職人(と言っても、難しいことはしていない)として
新サービスに携わっています。
そこで、ちょっとハマったところをメモします。
環境
- CentOS 6.8(プロビジョニング先のサーバー)
- itamae 1.9.9
前提条件
itamaeをホスト側で動作し、CentOSに接続できること。
詳細
itamaeでサクッと書きつつ、実行しました。
インストール系はうまく動作して問題なかったのですが
サービスの起動でエラーが発生してしまいました。
# 今回は、php-fpmが例です。 INFO : execute[/etc/init.d/php-fpm restart] executed will change from 'false' to 'true' ERROR : stdout | Stopping php-fpm: [60G[[0;31mFAILED[0;39m] ERROR : stdout | Starting php-fpm: [04-Aug-2016 11:35:59] ERROR: failed to open configuration file '/etc/php-fpm.d/default.conf': Permission denied (13) ERROR : stdout | [31-Jul-2016 11:35:59] ERROR: Unable to include /etc/php-fpm.d/default.conf from /etc/php-fpm.conf at line 11 ERROR : stdout | [31-Jul-2016 11:35:59] ERROR: failed to load configuration file '/etc/php-fpm.conf' ERROR : stdout | [31-Jul-2016 11:35:59] ERROR: FPM initialization failed ERROR : stdout | [60G[[0;31mFAILED[0;39m] ERROR : Command `sudo -H -u root -- /bin/sh -c cd\ \~root\ \;\ /etc/init.d/php-fpm\ restart` failed. (exit status: 1) ERROR : execute[/etc/init.d/php-fpm restart] Failed.
うーむ、なぜだろう。
実行権限、所有者、グループに間違いはないことは確認済みです。
解決策
調査したところ、SELinuxが悪さをしていたようです。
コマンドを叩いて現状を確認してみます。
$ getenforce Enforcing
SELinuxが有効のままでした。
そのため、Permissiveモードにしてみます。
$ setenforce 0 Permissive
変わっていたので、itamaeを再実行してみたところ正常に実行されました。
Linuxの知識が乏しいですが、SELinuxはよく邪魔者扱いされますが
実際OFFのままでもいいのでしょうか?難しいところです。