Mục đích của thư mục setgid là gì?


11

Tôi biết cách setgid hoạt động, nhưng tôi không biết tại sao nó được thiết kế, có ví dụ nào để minh họa những vấn đề mà nó giải quyết không?

Câu trả lời:


18

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 đó?


2
Nếu bạn đang sử dụng CVS, có lẽ bạn rất quen thuộc với nó vì lý do này (nếu các thư mục trong kho lưu trữ không được thiết lập, thì bạn sẽ gặp nhiều lỗi về quyền khi những người dùng khác cố gắng kiểm tra và cam kết các tệp)
Ức chế

Có, bạn đã đúng, những người dùng khác có thể chia sẻ (đọc) các tệp do bạn tạo trong thư mục setgid, nhưng quyền có thể ghi nhóm (g + w) không được kế thừa trong thư mục setgid và do đó người dùng khác không thể thêm vào phụ thư mục được tạo bởi bạn trong thư mục setgid, điều này giới hạn việc sử dụng nó. Và vì vậy tôi có câu hỏi này, nó giải quyết vấn đề chia sẻ đọc CVS ​​nhưng không chia sẻ-ghi vào các thư mục mới được tạo. ??
Xiè Jìléi

1
Đó là lý do tại sao bạn cũng muốn sử dụng các cài đặt umask phù hợp. Ví dụ, umask 007 sẽ để lại toàn quyền cho người dùng và nhóm, nhưng không có quyền cho người khác.
andol

13

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).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.