setfacl: Hai lệnh này có giống nhau không?


10

Tôi có một tập lệnh triển khai (dựa trên capifony) đặt quyền te trên các máy chủ cụ thể để cài đặt Symfony2. Nó chứa hai lệnh sau để làm điều này cho một số thư mục:

setfacl -R -m u:www-data:rwx -m u:`whoami`:rwX app/cache
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwX app/cache

Hai lệnh này trên trang web Symfony2 như là một cách để sửa các quyền, tuy nhiên, những lệnh này trông rất giống với tôi. Vì vậy, tôi đã xem xét các trang hướng dẫn setfaclvà từ những gì tôi có thể hiểu, lệnh thứ hai thực hiện chính xác những gì đầu tiên làm với một tùy chọn bổ sung (mà tôi không hiểu lắm). Câu hỏi của tôi là, giả định của tôi có đúng không? Nếu vậy, nó sẽ có tác dụng tương tự nếu tôi loại bỏ lệnh đầu tiên?

Câu trả lời:


15

Lệnh đầu tiên sẽ thay đổi quyền của bất kỳ tệp / thư mục tồn tại trước đó. Các -dtrong lệnh thứ hai là rất quan trọng để thiết lập các điều khoản mặc định đi về phía trước cho bất kỳ thư mục, do đó sẽ cung cấp một thiết lập mặc định của ACL cho bất kỳ tập tin trong các thư mục.

LƯU Ý: Trong cả hai trường hợp, các lệnh sẽ chạy đệ quy thông qua công -Rtắc.

Về việc -dchuyển đổi, từ setfacltrang người đàn ông:

   -d, --default
       All operations apply to the Default ACL. Regular ACL entries in the 
       input set are promoted to Default ACL entries. Default ACL  entries
       in the input set are discarded. (A warning is issued if that happens).

Đoạn trích này cũng giải thích nó khá tốt:

Có hai loại ACL: ACL truy cập và ACL mặc định. ACL truy cập là danh sách kiểm soát truy cập cho một tệp hoặc thư mục cụ thể. Một ACL mặc định chỉ có thể được liên kết với một thư mục; nếu một tệp trong thư mục không có ACL truy cập, nó sẽ sử dụng các quy tắc của ACL mặc định cho thư mục. ACL mặc định là tùy chọn.

Nguồn: 8.2. Đặt ACL truy cập .

Thí dụ

Nói rằng tôi có cấu trúc thư mục này.

$ tree
.
|-- dir1
|   |-- dirA
|   |   `-- file1
|   `-- fileA
`-- file1

2 directories, 3 files

Bây giờ, hãy đặt quyền bằng cách sử dụng setfacllệnh đầu tiên trong câu hỏi của bạn:

$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .

Kết quả nào sau đây:

$ getfacl dir1/ file1
# file: dir1
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x

# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--

Nếu không có -dRlệnh chạy ở đây, các thư mục mới sẽ không được ACL của bạn bao phủ:

$ mkdir dir2

$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x

Nhưng nếu chúng ta xóa thư mục này và chạy setfacl -dR ...lệnh và lặp lại thao tác này ở trên:

$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .

Bây giờ các quyền trông khá khác nhau:

$ getfacl dir1/ file1 
# file: dir1/
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--

Và bây giờ thư mục mới được tạo của chúng tôi sẽ nhận các quyền "mặc định" này:

$ mkdir dir2

$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

Có các quyền dir2này ngay bây giờ cũng sẽ thực thi các quyền này trên các tệp trong dir2:

$ touch dir2/fileA
$ getfacl dir2/fileA 
# file: dir2/fileA
# owner: saml
# group: saml
user::rw-
user:saml:rwx           #effective:rw-
user:samtest:rwx        #effective:rw-
group::rwx          #effective:rw-
mask::rw-
other::r--

À, vậy chỉ để xác nhận, ý bạn là nếu chúng ta có thư mục app/cachechứa thư mục được gọi dev, lệnh đầu tiên sẽ được áp dụng cho điều đó, nhưng không phải là thứ hai? Và nếu sau này một thư mục khác được thêm vào (ví dụ prod), lệnh thứ hai sẽ đặt quyền? Nếu đây không phải là trường hợp, tôi có thể bỏ qua lệnh thứ hai?
Hosh Sadiq

1
@HoshSadiq - không có -Rlệnh đệ quy, vì vậy các quyền được áp dụng. Các -dvệ sĩ nếu có ai đó tạo thư mục hoặc di chuyển một số thư mục vào cây sau đó để nó cũng được áp dụng ACL này.
slm

Thật tuyệt! Làm cho mọi thứ rõ ràng hơn nhiều :) Cảm ơn!
Hosh Sadiq
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.