契約しているVPS(ConoHa)で動かしているWebサーバをnginxからapacheに変更したのですが、その時にパーミッション周りでつまづいたので作業ログを残しておく。

まずはこれから公開するファイルをapahceのドキュメントルートに置くところから。通常ならapacheのドキュメントルート/var/www/htmlにファイルをアップすればいいだけなんだけど、自分の環境だと所有者がその場所の所有者がrootになっていたのでまずはこれをapacheの所有に変更する。

chown apache:apache html/

これだけだと自分(diwaoという名前のユーザー)でファイルのアップができないので、自分もapacheグループに所属させる。

sudo usermod -aG apache diwao

この(↑)時、-aGオプションをつけないとグループの追加ではなく上書きになってしまうらしいので注意。

これでファイルをアップできるようになったはず。と思って意気揚々とファイルを入れたらアップしたら、あげたファイルの所有者が全て自分になってしまいました。

-rw-r--r--  1 diwao   diwao   11542 11月 29 18:55 2016 index.html
-rw-r--r--  1 diwao   diwao   82834 11月 29 18:55 2016 index.xml
-rw-r--r--  1 diwao   diwao   72154 11月 29 18:56 2016 sitemap.xml

これをapacheも扱えるようにしてあげるべく、/var/www/htmlの直下で所有者変更のコマンドを実行。

sudo chown -R diwao:apache *

結果↓

-rw-r--r--  1 diwao   apache 11542 11月 29 18:55 2016 index.html
-rw-r--r--  1 diwao   apache 82834 11月 29 18:55 2016 index.xml
-rw-r--r--  1 diwao   apache 72154 11月 29 18:56 2016 sitemap.xml

これでとりあえずapacheをページを表示することができた。ただ、このままだと今後もファイルをアップするたびに権限変更をしなくてはいけない。それはあまりにもめんどいのでその対策もしておく。

cd ..で一階層上に行った後、sudo chmod -R g+s htmlを実行。これで次からファイルをあげても権限変更せずに済む。