読者です 読者をやめる 読者になる 読者になる

【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が悪さをしていたようです。

park1.wakwak.com

コマンドを叩いて現状を確認してみます。

$ getenforce
Enforcing

SELinuxが有効のままでした。
そのため、Permissiveモードにしてみます。

$ setenforce 0
Permissive

変わっていたので、itamaeを再実行してみたところ正常に実行されました。
Linuxの知識が乏しいですが、SELinuxはよく邪魔者扱いされますが
実際OFFのままでもいいのでしょうか?難しいところです。

ちなみにitamaeにもSELinuxを操作するプラグインがありました。

github.com