パーミッション周りは本当に難しい。。。
また業務で長い時間つまづいてしまったので備忘録としてまとめておく。

今回、Apache + vsftpdでWebサーバーに接続するFTP設定をしていた。

FTPはA、Bというユーザーを作り、以前まとめた下記記事の手順に従って複数ユーザーが接続できるようにしてみた。

ところが、一般ユーザーのA、Bでは公開ディレクトリ内にファイルをアップロードできなかったので、その原因と解決方法をまとめていく。

htmlディレクトリの所有ユーザーを変更する

俺のVPS環境だと「/var/www/」以下のディレクトリの所有ユーザーがrootになっていた。

まずはこれを「apache」に変更する。
-Rオプションを付けると配下のファイル・ディレクトリも一括して変更できる。

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

htmlディレクトリのパーミッション設定

/var/www/htmlのパーミッションを777にすれば、誰でも簡単にファイルの読み書きができるがセキュリティ的によろしくない。

ここは「775」とし、所有者・グループのrwx権限を許可し、その他ユーザーの書き込み権限を無くす。

chmod 775 /var/www/html/

FTP一般ユーザーをapacheグループに追加

このままでは一般ユーザーの書き込み権限がない状態なので、権限のあるapacheグループへ追加する。

usermod -aG apache user_a

グループ追加の設定はログアウト/ログインしないと反映されないので、一度FTPを切断してから接続し直す。

これで公開ディレクトリ「/var/www/html/」内に一般ユーザーがファイルをアップロードできるようになる。