apacheのFTP接続のための権限設定備忘録 | COMMONS NOTE

apacheのFTP接続のための権限設定備忘録

こんにちは、マダラです。
前回raspberry piにwordpressを設定する方法の備忘録を投稿しましたが、その後、
ワードプレス管理画面の表示や記事投稿などはできるもののプラグイン追加や、FTP接続後のファイルの送受信ができないという壁にぶつかりました。

どうもapacheがapache以外のユーザーを弾いてファイルの送受信を防いでるようです。

これを改善するためには権限を付与するしかなさそうです、、

apacheの権限周りの改善

下記のサイトがめちゃくちゃ役に立ちました!

https://qiita.com/kosukemaeda/items/faf8addfdd1190712280

下記のコマンドで権限等の確認を行えます。
ディレクトリはwordpressが入っているディレクトリですね!

ls -la /var/www

また、Apacheのユーザーと所属グループはwww-dataでした。ここが私が一番ハマったポイントでしたね。Apacheのユーザーとグループは、apache2.confファイルとenvvarsファイルで定義されています。

ほとんどのサイトでapache2.confやhttps.confといったファイルの修正や確認を促していますが、私の環境ではenvvarsファイルだったのでいくら探しても、apache2.confなどは存在しなかったのです、、、。

下記のコマンドでウェブ開発用ユーザーhogehogeをグループwww-data(Apacheのグループ)に追加します。

gpasswd -a hogehoge www-data

DocumentRoot下のすべてのファイルとディレクトリの所有者と所有グループをwww-data(Apache)にします。

 chown -R www-data:www-data /var/www/html

DocumentRoot下のディレクトリのパーミッションを770、ファイルのパーミッションを660にして、その他のユーザーがアクセス出来ないようにします。

find /var/www/html -type d -exec chmod 770 {} \;
find /var/www/html -type f -exec chmod 660 {} \;

再び下記のコマンドでパーミッションを確認すると変更されているのがわかるかと思います。

ls -la /var/www/html

下記のコマンドでDocumentRoot /var/www/html下に作成されるファイルの所有グループをwww-dataに固定してしまいましょう。ディレクトリにSGID(Set Group ID)を設定した場合は、その下に作成したファイル・ディレクトリが、SGIDが設定されているディレクトリの所有グループになることを利用します。

chmod -R 2770 /var/www/html

まとめ

とまぁここまで記事でまとめたものの私自身あまりよく理解していません。
詳しく知りたい方はリンク先のサイトで見てみてください!

なんにせよ、上記のコマンド群を実行したところ、Raspberry pi上に実装したwordpressの権限が変更されてFTP接続やプラグインのダウンロード・削除など行えるようになりました!

ありがたやありがたや。

なお、プラグインをダウンロードするときにFTP接続情報を求められる場合があります。
この時は、define('MS_METHOD');みたいなやつを特定のファイルに記述すると治るんですが忘れてので自分で調べてください。