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 -d
trong 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 -R
tắc.
Về việc -d
chuyển đổi, từ setfacl
trang 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 setfacl
lệ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ó -dR
lệ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 dir2
nà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--
app/cache
chứa thư mục được gọidev
, 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?