回答:
setgidファイル/バイナリは明らかに有用ではないかもしれませんが、ディレクトリに適用されたsetgidビットが非常に有用であることは間違いありません。あなたが異なるワーキンググループの一部であり、それぞれが独自のUNIX(許可)グループを持っていると仮定します。新しいファイルを作成するときに適切なグループ所有権が適用されることを確認し、そのプロジェクトグループの同僚がそれらのファイルにアクセスできるように、プロジェクトフォルダにsetgidビットを配置しますか?
主な用途は、ファイルツリーのグループ所有者を保持することです。
[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x 3 lockie lockie 4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x 2 lockie lockie 4096 Dec 13 19:32 dir
-rw-rw-r-- 1 lockie lockie 0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x 3 lockie staff 4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwsr-x 2 lockie staff 4096 Dec 13 19:32 dir < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r-- 1 lockie staff 0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$
これは、異なるユーザーがディレクトリの下にファイル/ディレクトリを作成/編集する環境で役立つ傾向があります:すべてのファイル/ディレクトリが同じグループを共有する場合、すべてのユーザーはファイル/ディレクトリを編集/変更できます(許可が許可されます):これにより、状況が回避されます「xyzはファイルabcを所有しているため、編集できません」など。
この方法でsetgidを使用する代わりに、grpidファイルシステムマウントオプションがあります。
man mountから:
grpidまたはbsdgroups / nogrpidまたはsysvgroups
これらのオプションは、新しく作成されたファイルが取得するグループIDを定義します。grpidが設定されると、作成されたディレクトリのグループIDが使用されます。そうでない場合(デフォルト)、ディレクトリにsetgidビットが設定されていない限り、現在のプロセスのfsgidを使用します。
有効にすると、grpidでマウントされたファイルシステムで作成されたファイル/ディレクトリも、親ディレクトリのグループを継承します。
[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x 3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x 2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r-- 1 lockie users 0 Dec 13 19:37 file < inherited "users" group from parent dir
[lockie@bubbles ~]$
grpidオプションを使用すると、人的エラーの可能性が適切に減少することがわかりました(dirパーミッションに関係なく、ファイルシステムが作業を行うため)。