2016年5月31日火曜日

FreePBXで発生したトラブルの内容と行なった対処(2016/05/31)

【トラブル 1】
FreePBXの管理画面を表示すると以下のエラーメッセージが表示される。
「open(/var/lib/php/session/sess_********************, O_RDWR) failed: Permission denied」

<原因>
不正アクセスを疑ったが、証跡なし。

<対処>
1. 他のFreePBX環境と比較すると、ディレクトリ及びファイルの権限及びOWNERが以下の通りになっていたため、それぞれ、参考にしたFreePBX環境と同じ権限及びOWNERに修正。
/var/lib/php root:apache 755 ⇒ root:asterisk 755
/var/lib/php/ root:apache 744 ⇒ asterisk:asterisk 744
/var/lib/php/sess_******************** root:apache 600 ⇒ asterisk:asterisk 644

上記の対応で、管理画面は表示されるようになったが、為念行なった再起動後、以下の事象が発生。

【トラブル 2】
上記の再起動後、FreePBXの管理画面を表示すると以下のエラーメッセージが表示される。
「[FATAL] SQLSTATE[28000] [1045] Access denied for user 'freepbxuser'@'localhost'」

<原因>
そもそも、freepbxuserがDB上に存在しなかった。
[確認コマンド]
# less /root/.mysql_history ※不正にDB上のデータが更新されていないか確認
# mysql -u root -pパスーワード
mysql > show grants for 'freepbxuser'@'localhost';
mysql > select Host, User, Password from mysql.user;

FreePBXをインストールする前に、別目的で、mysql上のrootユーザーにパスワードを設定していたため(FreePBXのインストーラはパスワードなしを想定していると思われる)、freepbxuserを作成できなかったのだと思われる。

<対処>
以下の手順でDB上にfreepbxuserを作成して、FreePBXを再起動する。
FreePBXが期待しているmysql接続用のパスワードを確認(AMPDBUSER、AMPDBPASS)。及びメモ。
# less /etc/amportal.conf

# mysql -u root -pパスワード
mysql >  GRANT ALL PRIVILEGES ON `asteriskcdrdb`.* TO 'freepbxuser'@'localhost' IDENTIFIED BY '上記で確認したパスワード';
mysql > GRANT ALL PRIVILEGES ON `asterisk`.* TO 'freepbxuser'@'localhost'IDENTIFIED BY '上記で確認したパスワード';

# fwconsole restart

ただし、再起動後、必ず、 「fwconsole restart」を実行しないと、FreePBXの管理画面から設定変更が失敗する。
グローバルIPが固定でないことが原因かも。
⇒asteriskがrootで起動してしまっているため。詳細は下記を参照のこと。


<参考サイト>
  1. MySQLのコマンド履歴を見る方法