Tập tin kế thừa quyền của thư mục nó được sao chép trong?


9

Tôi có các tệp được tạo vào thư mục chính của mình chỉ với quyền người dùng đọc ( r-- --- ---). Tôi muốn sao chép tập tin này vào một thư mục khác /etc/test/có sự cho phép của thư mục 744 ( rwx r-- r--). Tôi cần phải cho phép tệp tôi đang sao chép để kế thừa quyền của thư mục được sao chép vì cho đến nay khi tôi sao chép tệp, các quyền của tệp vẫn giống nhau ( r-- --- ---). Tôi đã thử lệnh setfacl, nhưng nó không hoạt động? Xin vui lòng giúp đỡ.

Tái bút Tôi không thể chỉ chmod -r /etc/test/vì có nhiều tệp sẽ được sao chép vào thư mục này theo thời gian và tôi không muốn chạy lệnh chmod mỗi khi tệp được sao chép.


Bạn setfaclđã thử lệnh nào? Sản lượng của nó là gì?
Mikel

setfacl -Rm d: u :: rwx, d: g :: r, d: o :: r / etc / test. Không có đầu ra, nó chỉ chấp nhận lệnh.
LUUUUUUUUUUUUUU

Làm thế nào bạn sao chép các tập tin? Điều gì xảy ra nếu bạn sử dụng /bin/cpkhông có tùy chọn?
Mikel

Lệnh tôi sử dụng là sudo cp / home / file / etc / test / file. Tôi cũng đã thử sử dụng / bin / cp nhưng không có kết quả khác
LUUUUUUUUUUUUUU

Câu trả lời:


14

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).


Các --no-preservecờ không phải là tiêu chuẩn, có lẽ một GNUism.
vonbrand

Đúng, cảm ơn tôi muốn nói rằng trong A.
slm

trong tinh thần của ngày lễ tình nhân tôi trao cho bạn một nụ hôn ảo, nó hoạt động! CẢM ƠN!
LUUUUUUUUUUUUUU
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.