apacheのドキュメントルートがroot所有になっている時の対応
契約している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
を実行。これで次からファイルをあげても権限変更せずに済む。