Điểm:0

Trên CentOS 6, làm cách nào để cho phép các tệp do người dùng tạo kế thừa quyền từ thư mục mẹ của chúng?

lá cờ bh

Vì vậy, máy chủ của chúng tôi được thiết lập như thế này:
cấu trúc thư mục

/asic là thư mục của dự án lớn của chúng tôi, /200T là một dự án con của dự án lớn đó và các thư mục ngay bên dưới /200T Như là /lbh là danh bạ cá nhân của từng công nhân đang làm việc trong tiểu dự án. /asic, /200T, /lbh tất cả đều được tạo ra bởi nguồn gốc và sau đó các thuộc tính của chúng được cấu hình lại bởi root thông qua chmod -Rchown -R. /asic/200T được sở hữu bởi nguồn gốc và thuộc nhóm asic200T tương ứng, trong khi /lbh được sở hữu bởi tài khoản người dùng của nhân viên lbh và thuộc nhóm asic.

Ý tưởng là nội dung bên trong /asic/200T có thể được nhìn thấy bởi tất cả các nhân viên làm việc trên asic200T nhưng họ không thể có quyền ghi vào 2 thư mục này-- nếu họ muốn tạo thứ gì đó, họ sẽ phải làm điều đó trong thư mục của chính họ (/lbh và tương tự). Khi một công nhân tạo một thứ gì đó trong thư mục của riêng họ, chúng tôi muốn những công nhân khác của cùng tiểu dự án có thể đọc được thứ mới đó nhưng không vô tình sửa đổi nó. Ví dụ, lbh vừa tạo một tập tin testbench.v và một thư mục /kết quả Dưới /asic/200T/lbh. Người khác (glj) trên 200T tiểu dự án sẽ có thể đọc /asic/200T/lbh/testbench.v/asic/200T/lbh/kết quả nhưng không viết vào chúng. Nếu glj muốn sửa đổi chúng, anh ấy sẽ phải sao chép chúng vào thư mục của mình /asic/200T/glj và sau đó làm như vậy.

Để đạt được các mục tiêu trên, chúng tôi cần có quyền của các thư mục được tạo bởi lbh được drwxr-s--- và các tập tin được rwxr-s--- theo mặc định, tuy nhiên thực tế trông như thế này:
Các tệp và thư mục được tạo bởi lbh và root

Kết quả là mỗi nhân viên có thể ghi vào các thư mục và tệp riêng của mọi người, đó chính là điều chúng tôi đang cố gắng tránh. Các cái ô của nguồn gốc0022, và cái ô của người dùng bình thường là 0002.

Những câu hỏi của tôi:

  1. Tại sao các tệp được tạo bởi người dùng (như /lbh) trong thư mục cá nhân của họ (như lbh) bỏ qua drwxr-s--- quyền của thư mục cá nhân và mặc định là (d)rwxrwsr-x?
  2. Có phương pháp an toàn nào để cho phép nhân viên tạo tệp và thư mục không với (d)rwxr-s--- theo mặc định? Yêu cầu mọi người dùng thủ công chmod mọi thứ mọi lúc đều quá rắc rối, và tôi lo lắng rằng thay đổi mặc định cái ô giá trị có thể dẫn đến cái mới vấn đề bất ngờ xuống dòng.

Cảm ơn rất nhiều!


Chỉnh sửa: Cấu trúc thư mục và quyền của các tệp được tạo bởi lbh và root trông giống như sau:

[lbh@<máy> lbh]$ ls -al
tổng số 16
drwxr-s---. 4 lbh 200T 4096 1 tháng 10 02:40 .
drwxr-sr-x. 4 root 200T 4096 Ngày 1 tháng 10 02:18 ..
drwxrwsr-x. 2 lbh 200T 4096 1 tháng 10 02:26 aaa_lbh
drwxr-sr-x.2 gốc 200T 4096 ngày 1 tháng 10 02:26 aaa_root
-rw-rw-r--. 1 lbh 200T 0 ngày 1 tháng 10 02:38 file_lbh.txt
-rw-r--r--. 1 gốc 200T 0 ngày 1 tháng 10 02:40 file_root.txt
[lbh@<máy> lbh]$ pwd
/asic/200T/lbh
[lbh@<máy> lbh]$ cd ..
[lbh@<máy> 200T]$ ls -al
tổng số 16
drwxr-sr-x. 4 gốc 200T 4096 ngày 1 tháng 10 02:18 .
drwxr-x---. 3 root asic 4096 Ngày 1 tháng 10 02:16 ..
drwxr-sr-x. 2 gốc 200T 4096 Ngày 1 tháng 10 02:18 aaa
drwxr-s---. 4 lbh 200T 4096 1 tháng 10 02:40 lbh
[lbh@<machine> 200T]$ pwd
/asic/200T
[lbh@<máy> 200T]$ 

getfaclkết quả của các thư mục và tập tin như sau:

[lbh@<machine> Desktop]$ getfacl /asic
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic
# chủ sở hữu: root
# nhóm: asic
người dùng::rwx
nhóm::r-x
khác::---

[lbh@<machine> Desktop]$ getfacl /asic/200T/
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic/200T/
# chủ sở hữu: root
# nhóm: 200T
# cờ: -s-
người dùng::rwx
nhóm::r-x
khác::r-x

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic/200T/lbh
# chủ thớt: lbh
# nhóm: 200T
# cờ: -s-
người dùng::rwx
nhóm::r-x
khác::---

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh/aaa_lbh/
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic/200T/lbh/aaa_lbh/
# chủ thớt: lbh
# nhóm: 200T
# cờ: -s-
người dùng::rwx
nhóm::rwx
khác::r-x

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh/aaa_root/
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic/200T/lbh/aaa_root/
# chủ sở hữu: root
# nhóm: 200T
# cờ: -s-
người dùng::rwx
nhóm::r-x
khác::r-x

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh/file_lbh.txt 
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic/200T/lbh/file_lbh.txt
# chủ thớt: lbh
# nhóm: 200T
người dùng::rw-
nhóm::rw-
khác::r--

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh/file_root.txt 
getfacl: Xóa '/' hàng đầu khỏi tên đường dẫn tuyệt đối
# tập tin: asic/200T/lbh/file_root.txt
# chủ sở hữu: root
# nhóm: 200T
người dùng::rw-
nhóm::r--
khác::r--

[lbh@<machine> Desktop]$ touch hello.txt
[lbh@<machine> Desktop]$ mkdir xin chào 
[lbh@<machine> Desktop]$ ls -al
tổng số 12
drwxr-xr-x. 3 lbh lbh 4096 9 tháng 10 17:28 .
drwx------. 36 lbh lbh 4096 Ngày 9 tháng 10 17:21 ..
-rw-rw-r--. 1 lbh lbh 0 ngày 9 tháng 10 17:27 hello.txt
drwxrwxr-x. 2 lbh lbh 4096 9 tháng 10 17:28 xin chào
[lbh@<machine> Desktop]$ getfacl xin chào
# tập tin: chào
# chủ thớt: lbh
# nhóm: lbh
người dùng::rwx
nhóm::rwx
khác::r-x

[lbh@<machine> Desktop]$ getfacl hello.txt 
# tập tin: hello.txt
# chủ thớt: lbh
# nhóm: lbh
người dùng::rw-
nhóm::rw-
khác::r--

[lbh@<machine> Desktop]$ 
Điểm:0
lá cờ za

Linux không hỗ trợ kế thừa quyền, vì vậy bạn không thể thực hiện những gì bạn đã hỏi trong chủ đề câu hỏi.

Điều tốt nhất bạn có thể làm là thiết lập mặc định POSIX ACL sẽ áp dụng cho tất cả các tệp và thư mục mới được tạo. Đây không phải là thừa kế, chỉ là mặc định:

setfacl -m default:user:<username>:rwx <dir>
setfacl -m mặc định:nhóm:<tên nhóm>:rwx <dir>

Sau này, nếu bất kỳ ai tạo tệp hoặc thư mục trong (tất nhiên nếu họ được phép tạo đối tượng ở đó), đối tượng đó sẽ nhận được ACL bổ sung người dùng:<tên người dùng>:rwxnhóm:<tên nhóm>:rwx. Bạn có thể đặt quyền mặc định cho chủ sở hữu và chủ sở hữu nhóm bằng cách đặt <username><groupname> trống.

"Mặc định" này chỉ có thể được đặt trên một thư mục, vì không có lý do gì để áp dụng điều này cho các tệp. Các quyền được đặt theo cách này cũng được che bằng các ô, vì vậy nếu một số bit bị bỏ trong ô, thì bit này sẽ bị loại bỏ khỏi một quyền. Chẳng hạn, khi bạn tạo một tệp, nếu bạn không cung cấp bit thực thi cho nó, thì nó sẽ không thể thực thi được (như mong đợi). Các thư mục con đã tạo cũng sẽ có cùng bộ ACL "mặc định", vì vậy các thư mục con của nó cũng sẽ có các ACL này được đặt. Bạn phải xóa hoặc thay đổi ACL trên các thư mục con sau khi tạo để dừng quá trình lan truyền này.

Kiểm tra ACL với getfacl <dir>. Tất nhiên, có thể có một số mặc định như vậy (và có vẻ như bạn phải kết thúc với một số quy tắc); ít nhất, các yêu cầu mà tôi gặp phải luôn bắt buộc phải có ít nhất hai ACL nhóm mặc định).


Bạn không thể đặt "chủ sở hữu tệp mặc định" theo cách này, chủ sở hữu sẽ luôn được đặt để tạo uid hiệu quả cho quy trình. Theo mặc định, chủ sở hữu nhóm sẽ được đặt để xử lý gid, nhưng bạn có thể thay đổi điều đó bằng cách sử dụng thiết lập bit trên thư mục mẹ:

    chmod g+s <dir>

sau đó, bất kỳ đối tượng nào được tạo trong thư mục đó sẽ sao chép chủ sở hữu nhóm của nó theo mặc định, ngay cả khi người dùng tạo không thuộc nhóm đó. Bit setgit này lan truyền đến các thư mục con.

Chủ sở hữu có thể đặt chủ sở hữu nhóm cho bất kỳ nhóm nào mà họ thuộc về. Nếu họ không thuộc về nhóm do setgid dẫn xuất, họ có thể thay đổi chủ sở hữu nhóm tệp của mình thành bất kỳ nhóm nào mà họ thuộc về, nhưng sau đó họ sẽ không thể thay đổi lại thành giá trị setgid.


Tôi muốn lưu ý một lần nữa một cách rõ ràng, đây là không phải thừa kế, đây là cài đặt mặc định không hoàn toàn giống nhau. Nếu bạn thay đổi điều gì đó trên đối tượng cha sau đó, các đối tượng đã được tạo sẽ luôn giữ quyền của chúng trong Linux.

Trong khi, ví dụ, trong Windows, khi bạn đặt ACL đối tượng phụ thành "kế thừa", việc thay đổi ACL cha sẽ ảnh hưởng đến hậu duệ, đó là kế thừa phù hợp.

NoobAdmin avatar
lá cờ bh
Cảm ơn rất nhiều! Tôi sẽ thử xem phương pháp này có hiệu quả với chúng ta không. Mặc dù tôi vẫn còn bối rối về lý do tại sao các thư mục do người dùng tạo lại là drwxrwsr-x? Giá trị ô 0022 sẽ biến nó thành drwxrwxr-x, phải không? Vì vậy, bit gid có được kế thừa không?
NoobAdmin avatar
lá cờ bh
Sửa lỗi: xin lỗi, ý tôi là giá trị ô là 0002 (người dùng bình thường), không phải 0022 (root)
Nikita Kipriyanov avatar
lá cờ za
*không có gì* được kế thừa. Các ACL mặc định được lưu dưới dạng ACL, ô được đặt làm chế độ tệp và sau đó nếu ai đó truy cập tệp thì Linux sẽ đọc cả hai và AND chúng sẽ tính toán quyền thực tế.
NoobAdmin avatar
lá cờ bh
Vì vậy, trong ảnh chụp màn hình thứ hai của tôi ("Tệp và thư mục được tạo bởi lbh và gốc") thư mục "aaa_lbh" được tạo bởi lbh là drwxrwsr-x thay vì drwxrwxr-x và chữ "s" đó ở đó vì Linux đã tính cả ô của lbh và ô ACL của thư mục mẹ (/asic/200T/lbh)?
Nikita Kipriyanov avatar
lá cờ za
Không phải "s" có nghĩa là "setgid" sao? Nó không có điểm gì chung với những chiếc mặt nạ này. Nhưng tôi phải thừa nhận rằng tôi đã quên mất khả năng này. Nó cho phép con cháu lấy nhóm chủ sở hữu từ thư mục thay vì quá trình gid. Nếu bạn muốn khám phá ACL, hãy sử dụng `getfacl`, nó cũng tính toán các quyền hiệu quả. Và cuối cùng, tất cả những điều này là thông tin *văn bản*, vui lòng không chụp ảnh màn hình, thay vào đó hãy sao chép và dán đầu ra của bảng điều khiển.
NoobAdmin avatar
lá cờ bh
Cảm ơn, tôi vừa cập nhật bài đăng gốc của mình với đầu ra của thiết bị đầu cuối. Các tệp mới được tạo bởi ```lbh``` trên ```Desktop``` không có bit ```setgid```, vì vậy có vẻ như các tệp mới được tạo trong ```/asic/200T/lbh`` ` có cờ ```s``` vì thư mục mẹ có.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.