linux / setfacl - Đặt tất cả các tệp / thư mục hiện tại / tương lai trong thư mục mẹ thành 775 với chủ sở hữu / nhóm được chỉ định


42

Tôi có một thư mục gọi là "thành viên" và bên dưới nó có các thư mục / tập tin. Làm cách nào tôi có thể đặt đệ quy tất cả các thư mục / tệp hiện tại và bất kỳ thư mục nào trong tương lai được tạo ở đó theo mặc định có 775 quyền và thuộc về chủ sở hữu / nhóm không ai / quản trị viên tương ứng? Tôi đã kích hoạt ACL, được gắn kết, nhưng dường như không thể có lệnh setfacl để thực hiện việc này đúng cách. Bất kỳ ý tưởng làm thế nào để thực hiện điều này?

Câu trả lời:


62

Tôi thực sự đã tìm thấy một cái gì đó cho đến nay làm những gì tôi yêu cầu, chia sẻ ở đây để bất kỳ ai gặp phải vấn đề này đều có thể thử giải pháp này:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R là đệ quy, có nghĩa là mọi thứ trong thư mục đó sẽ có quy tắc được áp dụng cho nó.
d là mặc định, có nghĩa là cho tất cả các mục trong tương lai được tạo trong thư mục đó, có các quy tắc này được áp dụng theo mặc định. m là cần thiết để thêm / sửa đổi các quy tắc.

Lệnh đầu tiên, dành cho các mục mới (do đó là d), lệnh thứ hai, dành cho các mục cũ / hiện có trong thư mục. Hy vọng điều này sẽ giúp ai đó vì công cụ này hơi phức tạp và không trực quan lắm.


2
Đây chính xác là những gì tôi cần để có được chủ sở hữu của một thư mục ông bà để có thể sửa đổi chính xác nội dung của các thư mục cháu mới.
Joost

Nếu bạn là người dùng duy nhất của Rpi, bạn có thể thay thế g: tên nhóm bằng pi: pi hoặc chỉ pi
SDsolar

Bạn có thể chỉ cho người dùng, nhóm và khác trong một dòng, ví dụ -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwx.
dùng2340939

18

Để đi với câu trả lời được chấp nhận của bạn ...

Bạn có thể kết hợp các lệnh đó với nhau như:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/

Đó là mát mẻ. Làm thế nào mà bạn thiết lập d:trên các mục đầu tiên chứ không phải là -Rmd? Tôi có thể nói rằng tham số thứ hai không nên có default- thật lạ khi linux chấp nhận nó với tôi.
JREAM

1
@JREAM: Linux (trên thực tế getopt_long) gửi toàn bộ lập luận để lựa chọn-m được phân tách bằng tay bằng cách setfacl, tách bằng dấu phẩy các đối số được truyền. Chúng được thêm vào một danh sách được liên kết được lặp lại ở cuối khi thực sự thay đổi ACL.
Benoit Duffez

2

setfacl trên linux có -d-kcác tùy chọn để thao tác các quyền mặc định có lẽ là thứ bạn đang tìm kiếm (xem man để biết thêm thông tin).


1

Thật dễ dàng để thiết lập đệ quy các quyền UNIX đơn giản theo yêu cầu của người dùng được ủy quyền phù hợp, các quyền của thư mục và tệp. Không thể tự động áp đặt điều này.

Bạn có thể yêu cầu người dùng sử dụng bộ số 0002 và điều đó giúp tạo các tệp mới ở 0775 (tùy thuộc vào ứng dụng). Nhưng nó không thể thi hành được.

Tôi hiểu rằng ACL không được kế thừa trên các hệ thống UNIX / Linux. Chúng được đặt theo yêu cầu.

Đối với quyền sở hữu tập tin / thư mục, bạn gặp khá nhiều may mắn ở đây.

Đối với quyền sở hữu nhóm tệp / thư mục, bằng cách đặt bit set-gid thư mục (tức là g + s trên TRỰC TIẾP), điều này không làm cho quyền sở hữu nhóm được kế thừa.

Những gì tôi đã làm trong các tình huống như vậy là thực thi một tập lệnh cron gốc định kỳ, đặt lại các quyền / quyền sở hữu không tuân thủ theo tiêu chuẩn trong các thư mục đó.

Một quy trình khác (KHÔNG ĐƯỢC KHUYẾN NGHỊ) là sử dụng cùng một id người dùng khi làm việc trên các tệp này. Điều này có thể được thực hiện bằng cách người dùng đăng nhập vào hệ thống theo UID của chính mình và sau đó sử dụng sudo hoặc su để chạy dưới dạng id. Điều này vẫn không phải là 100% đặc biệt liên quan đến ACL và bit cho phép.

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.