実行可能ファイルの場合、実行g+s
可能ファイルが実行されるグループ ID をオーバーライドします (通常、親から継承されます)。
$ cp `どの id` id テスト
$ ./id-テスト
uid=1001(ユーザー1) gid=1001(グループ1) グループ=1001(グループ1),2001(プロジェクト1)
$ chgrp project1 id-テスト
$ chmod g+s id テスト
$ ./id-テスト
uid=1001(user1) gid=1001(group1) egid=2001(project1) groups=1001(group1),2001(project1)
(egid は「有効なグループ ID」です。通常は gid の「グループ ID」と同じですが、ここでは異なります。)
ディレクトリのg+s
場合、新しいファイルとディレクトリが持つグループ ID をオーバーライドします (通常は作成者から継承されます)。
$ mkdir プロジェクト
$ chgrp プロジェクト 1 ファイル 1
$ umask
0022
$ タッチ プロジェクト/ファイル 1
$ ls -l プロジェクト/ファイル 1
-rw-r--r-- 1 ユーザー1 グループ1 0 ファイル1
$ chmod g+s プロジェクト
$ タッチ プロジェクト/ファイル 2
$ ls -l プロジェクト/ファイル 2
-rw-r--r-- 1 ユーザー1 プロジェクト1 0 ファイル2
umask
最良の結果を得るには、いじる必要があるかもしれません。少なくとも共有書き込みに必要なのと同じくらい寛容なもの、共有読み取りに必要なのと0007
少なくとも同じくらい寛容なもの。0027
$ umask 0077
$ タッチ プロジェクト/ファイル 3
$ ls -l プロジェクト/ファイル 3
-rw------- 1 ユーザー 1 プロジェクト 1 0 ファイル 3
$ umask 0027
$ タッチ プロジェクト/ファイル 4
$ ls -l プロジェクト/ファイル 4
-rw-r----- 1 ユーザー 1 プロジェクト 1 0 ファイル 4
$ umask 0007
$ touch project1/file5
$ ls -l プロジェクト 1/ファイル 5
-rw-rw---- 1 user1 project1 0 file5