よくわかっていないけど、おそらくこういうことだろうというメモ
やりたいこと
- 1つのVPSにエンジニア用のアカウントが複数あり、プロジェクトのソースも複数案件分ある。
- 全てのプロジェクトのソースは、エンジニアであれば誰でも編集可能であり、新規ファイル作成も可能にしたい。
構想
/home
|- tanaka
|- kato
|- tokui
|- projects <--このディレクトリ以下を共同編集したい
|- project1 <--WEBシステム1
|- htdocs
|- system
|- project2 <--WEBシステム2
|- public_html
|- system
- 田中さんと加藤さんと徳井さんはエンジニアグループ(techグループ)
- projectsは共同作業用ユーザー
- エンジニアがprojects以下にファイルを作成すると、「グループがtechでありグループのパーミッションが書込可」となるとよい
- ディレクトリを作成したときもそうなるとよい
実現方法
- /home/projectsディレクトリをtechグループにする
groupadd tech
gpasswd -a tanaka tech
gpasswd -a kato tech
gpasswd -a tokui tech
chgrp tech /home/projects
chmod 775 /home/projects
- セットユーザIDとやらをセットする(新規ファイルが自動的にtechグループになる)
chmod g+s /home/projects
- umaskをセットする(新規ファイルが自動的にグループ書込み可になる)
umask 0002
※CentOSではログイン用のユーザーはデフォルトで0002になっているようなのでセット不要な模様。
デフォルトで0002でない場合は、各ユーザーの.bash_profile等に書いておく。
- 既にファイルがある場合は全てに適用
chgrp tech -R /home/projects
chmod g+w -R /home/projects
find . -type d -print | xargs chmod g+s
結果
ls -al /home/projects
drwxrwsr-x. 5 projects tech 4096 Mar 6 18:25 .
drwxr-xr-x. 21 root root 4096 Mar 6 16:29 ..
drwxrwsr-x. 4 tanaka tech 4096 Mar 6 16:34 project1
drwxrwsr-x. 2 kato tech 4096 Mar 6 18:25 project2
テスト
- ディレクトリを追加してみる
mkdir -p /home/projects/project1/htdocs/img
ls -al /home/projects/project1/htdocs
drwxrwsr-x. 2 kato tech 4096 Mar 6 19:00 img
- ファイルを追加してみる
touch /home/projects/project1/htdocs/index.html
ls -al /home/projects/project1/htdocs
drwxrwsr-x. 2 kato tech 4096 Mar 6 19:00 img
-rw-rw-r--. 1 kato tech 0 Mar 6 19:04 index.html
これで、techグループのユーザーであればいくらでもソースを変更できます。
おわり
これでやりたいことはできたと思う。
umaskはユーザー毎のようなので、デフォルトが022の場合は少し手順が増えそう。(よくわかってない)