[Unix] 特定ディレクトリを複数ユーザで作業できるようにする

ウェブサーバーの設定でちょっとハマッたので覚え書き

条件

  • ウェブサーバーはユーザapacheで実行される
  • ユーザapacheはグループapacheに属する
  • ログインして作業するのはユーザsuzukiである
  • ユーザsuzukiはグループsuzukiとグループwheelに属する

問題点

ウェブページを配置するディレクトリ/var/wwwに関して

  • 所有者をapacheにするとsuzukiは操作できなくなる
  • 所有者をsuzukiにするとウェブサーバーから操作できなくなる

両方のユーザから操作できるディレクトリはどうやって設定するべきか?

解決法

ユーザsuzukiにグループapacheを追加

/var/wwwの所有者をapache、所有グループをapacheに変更

/var/wwwのパーミッションを775に変更 (グループに読み書き権限を与える)

/var/wwwにSGIDを付与する

umaskが002になっていることを確認する(なっていなければ、ログインスクリプトなどに設定する)。

以上の設定により、以降に作成されるサブディレクトリやファイルの所有グループは全てapacheとなるため、wwwディレクトリ以下はsuzukiとapacheの両方で問題なく操作できるようになる。

参考サイト

Linux|共同作業用のグループとパーミッション設定方法(UGP) | blog onk
http://blog.onk164.net/archives/272.html

Linux – グループ開発時の権限設定 – Qiita
http://qiita.com/soramugi/items/53478cbee857815c4a37

SGID(Set Group ID) – 特殊なアクセス権
http://kazmax.zpp.jp/linux_beginner/setgroupid.html

Linuxコマンド【 groups 】ユーザーの所属グループを表示 – Linux入門 – Webkaru
http://webkaru.net/linux/groups-command/