Quyền thường không được truyền bá bởi thư mục mà các tệp đang được sao chép vào, thay vào đó các quyền mới được kiểm soát bởi người dùng umask. Tuy nhiên, khi bạn sao chép tệp từ vị trí này sang vị trí khác, đó là một trường hợp đặc biệt trong đó người dùng về umaskcơ bản bị bỏ qua và các quyền hiện có trên tệp được giữ nguyên. Hiểu khái niệm này là chìa khóa để có được những gì bạn muốn.
Vì vậy, để sao chép một tập tin nhưng "bỏ" các quyền hiện tại của nó, bạn có thể nói cpvới "không bảo toàn" bằng cách sử dụng công --no-preserve=alltắc.
Thí dụ
Nói rằng tôi có các tập tin sau như bạn.
$ mkdir -m 744 somedir
$ touch afile
$ chmod 400 afile 
$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile
Và như bạn đã xác nhận nếu chúng tôi chỉ sao chép một cách mù quáng bằng cách sử dụng cpchúng tôi sẽ nhận được điều này:
$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile
Bây giờ chúng ta hãy lặp lại điều này nhưng lần này hãy nói cpvới "thả quyền":
$ rm -f somedir/afile 
$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile
Vì vậy, tập tin sao chép bây giờ có quyền của nó được đặt thành 664, nó đã lấy những quyền đó ở đâu?
$ umask
0002
Nếu tôi đổi umaskmột thứ khác, chúng tôi có thể lặp lại thử nghiệm này lần thứ 3 và xem các hiệu ứng umaskcó trên không được bảo tồn cp:
$ umask 037
$ rm somedir/afile 
$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile
Lưu ý rằng các quyền không còn là 664, nhưng là 640? Điều đó đã được quyết định bởi umask. Nó đã nói với bất kỳ lệnh nào tạo ra một tệp để vô hiệu hóa 5 bit thấp hơn trong các quyền ... những kẻ này: ( ----wxrwx).
               
              
setfaclđã thử lệnh nào? Sản lượng của nó là gì?