Câu trả lời:
Mặc dù tệp setgid / nhị phân có thể không hữu ích rõ ràng, tôi chắc chắn thấy bit setgid rất hữu ích được áp dụng trên các thư mục. Giả sử bạn là một phần của các nhóm làm việc khác nhau, mỗi nhóm có các nhóm unix (quyền) riêng. Chắc chắn sau đó bạn sẽ muốn đặt bit setgid vào các thư mục dự án, đảm bảo rằng quyền sở hữu nhóm đúng được áp dụng khi bạn tạo tệp mới, và do đó cho phép các đồng nghiệp của bạn trong nhóm dự án đó truy cập vào các tệp đó?
Công dụng chính là bảo vệ chủ sở hữu nhóm của một cây tệp:
[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]$
Điều này có xu hướng hữu ích trong các môi trường nơi những người dùng khác nhau sẽ tạo / chỉnh sửa tệp / thư mục trong một thư mục: Khi tất cả các tệp / thư mục chia sẻ cùng một nhóm, tất cả người dùng có thể chỉnh sửa / thay đổi tệp / thư mục (cho phép quyền): Điều này tránh được các tình huống chẳng hạn như "xyz sở hữu tập tin abc, vì vậy tôi không thể chỉnh sửa nó".
Một cách khác để sử dụng setgid theo cách này là tùy chọn gắn kết hệ thống tập tin grpid .
Từ người đàn ông gắn kết:
grpid hoặc bsdgroups / nogrpid hoặc sysvgroups
Các tùy chọn này xác định id nhóm nào mà tệp mới tạo được. Khi grpid được đặt, nó sẽ lấy id nhóm của thư mục mà nó được tạo; mặt khác (mặc định) nó lấy fsgid của tiến trình hiện tại, trừ khi thư mục có tập bit setgid, trong trường hợp đó, nó lấy gid từ thư mục mẹ và cũng lấy bit setgid nếu nó là thư mục.
Khi được bật, các tệp / thư mục được tạo trên hệ thống tệp được gắn grpid cũng kế thừa nhóm của thư mục mẹ:
[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 ~]$
Tôi đã tìm thấy bằng cách sử dụng tùy chọn grpid một cách thích hợp làm giảm khả năng xảy ra lỗi của con người (vì hệ thống tập tin thực hiện công việc, bất kể quyền truy cập dir).