何も設定していない初期状態では、ユーザを新規作成すると1:1でユーザ名と同じグループが作成されます。
# 勿論、既存のグループを指定してユーザを新規作成する事も可能ですが。
ここで、ユーザを新規作成します。
uid=500(userA) gid=500(userA) 所属グループ=500(userA)
uid=501(userB) gid=501(userB) 所属グループ=501(userB)
uid=502(userC) gid=502(userC) 所属グループ=502(userC)
としよう。
ここで、userAさんのプロジェクトにuserBさんが応援に来ました。
その為、userAさんとuserBさんはファイルを共同管理しなくてはいけなくなった。
しかし、デフォルトのアクセス権はディレクトリならば755、ファイルならば644となっている。
ここで、一端デフォルトのアクセス権の確認方法に移る。
[user@CentOS]$ umask
を実行するとデフォルトのアクセス権が確認できる。
[userA@CentOS]$ umask
0022
となるはずだ。
後ろ3桁が許可しないアクセス権を示しているので、ディレクトリなら777、ファイルなら666から引き算する必要がある。
ディレクトリ:777 - 022 = 755
ファイル:666 - 022 = 644
なので、自分以外は参照できるが、書き換えできない状態である。
これでは、userAさんとuserBさんはファイルが共同管理できない。
共同管理するために、
[userA@CentOS]$ chmod 777 [共同管理したいディレクトリのパス]
を実行したとしよう。
共同管理は出来るようになったが、プロジェクトに関係ないuserCさんまで閲覧及び書き換えまで出来るようになってしまった。
これではまずいので、どうすればよかったのかを説明しよう。
最初にuserAさんはプロジェクト用のグループ(projectAB)を作成しておきます。
[root@CentOS]# groupadd projectAB
プロジェクト用の新規ディレクトリを作成します
[root@CentOS]# mkdir -p /home/projectAB
[root@CentOS]# ls -al /home/
drwxw-xw-x 数値 root root 数値 変更日付 projectAB
なので、このままではrootの所属でuserA&userBは手出しが出来ません。
そこで所有者とグループを変更します。
[root@CentOS]# chown userA:projectAB /home/projectAB
[root@CentOS]# ls -al /home/
drwxw-xw-x 数値 userA projectAB 数値 変更日付 projectAB
グループに所属しているれば書き換えできるようにグループにもアクセス権を与えます。
この際、グループにセットIDも一緒に与えておきましょう。
こうする事によって、セットIDが与えられたディレクトリの配下でディレクトリ or ファイルを作成した場合、セットIDを与えた権限を保持したまま作成されます。
[root@CentOS]# chmod 2775 /home/projectAB
[root@CentOS]# ls -al /home/
drwxwrsw-x 数値 userA projectAB 数値 変更日付 projectAB
セットIDが付与されているので
[root@CentOS]# mkdir -p /home/projectAB/test
[root@CentOS]# ls -al /home/projectAB
drwxwrsw-x 数値 root projectAB 数値 変更日付 test
となる。
これで、projectAB配下で誰がファイルを作ろうと読み書きが出来るようになる。
もしかすると
drwxw-sw-x 数値 root projectAB 数値 変更日付 test
となる可能性もある。
その場合は、umaskを設定する。
[userA@CentOS]$ umask 002
で、ログアウトするまで、新規作成するファイルはグループまで読み書き可能な状態で作成される。
これを恒久的にするには、「/etc/.bashrc」に設定すればいいのですが、全てのユーザに適応されてしまうので問題です。
各ユーザの「~/.bashrc」に「umask 002」と記すと、そのユーザだけ新規作成するファイルのアクセス権が変更になる。
最後に。
SSHサーバー構築(OpenSSH) - CentOSで自宅サーバー構築(
http://centossrv.com/openssh.shtml )の「chrootユーザー作成」を参照してユーザを作成しました。
この時、各ユーザのホームのアクセス権と所有者を変更するとSSHでログインできなくなります。
グループに関しては変更しても大丈夫ですが、chrootなので、意味はありませんね。
強いて言うなら、chrootで作成しなかったユーザが所属しているグループにしておくと管理がしやすいかも。
権限的には
root > rootになれるユーザ > 普通ユーザ > chrootユーザ
ですね。