Movable Type for AWSでサイトを運用する場合、Movable Type(以下MT)のプラグインやテーマといったファイルをアップロードする必要が出てくると思います。運用開始後、もしかするとクライアントさんがMTで管理しないファイルをアップロードしたいといった要望も出るかもしれません。どのようにしたら良いかを検討してみましたので、記録を残しておきます。
SFTP
アップロード方法としてまず思いつくのは、SFTPではないかと思います。デフォルトのec2-userユーザーを使えば、サーバーの設定を変更することなく接続は可能です。しかしながら、MTが格納されている/app/movabletypeディレクトリの所有者はwww、パーミッションは755なので、アップロードは不可能です。
ec2-userをwwwグループに入れて、chmod g+w plugins
などとしていけば良さそうですが、アップロード先はいくつかあるのでなかなか大変かもしれません。また、アップグレード(昨日の記事を参照)の仕方によっては、アクセス権の設定を再度行わなければならず、手間かもしれません。さらに、SSHを使えない人がWidget Manager version 1.1のような不要プラグインを削除できるようにするとなると、さらにアクセス権の設定が必要です。
FTP(S)
FTPサーバーを導入する方法も実験してみました。Amazon Linuxであれば、yumでvsftpdをすぐにインストールすることが可能です。
vsftpdの設定は、FTPサーバー構築(vsftpd) - CentOSで自宅サーバー構築等で詳しく解説されています。追加でユーザーwwwにパスワードを設定したり、セキュリティグループでポートを開ける設定をしたり、他細々と設定が必要ですが、Linuxに慣れている方であれば問題ないかと思われます。
この方式であれば、/app/movabletypeなどのパーミッションを変えることなく、プラグインやテーマのアップロードが可能になりました。MT以外のファイルは所有者がroot等になっており、誤って編集したり削除したりすることは出来ないはずなので、安全ではないでしょうか。
先に書いた「クライアントさんがMTで管理しないファイルをアップロードしたい」といった要望がある場合は、下記条件でユーザーを追加すれば良いと思います。
- グループはwww
- ホームディレクトリは/data/file/static
- /sbin/nologinを指定
そして/data/file/staticディレクトリのパーミッションを775に設定します。追加したユーザーを/etc/vsftpd/chroot_listに加えなければ、/data/file/static以下を除いてたどれないので、MTのファイルが編集されてしまうといった心配がありません。
懸念事項
- ユーザーwwwはstarmanの実行ユーザーのようなので、FTPに使って良いものか...。ダメな場合、やはりパーミッションの設定が必要になります。
- FTPアクセス用のバーチャルユーザーを作成する : アシアルブログのように設定するのも良さそうです。