cp + không muốn ghi đè quyền


23

Làm thế nào để bạn sử dụng cplệnh mà không thay đổi quyền của tệp mục tiêu? Ví dụ:

cp /tmp/file   /home/file

Tôi không muốn thay đổi chownchgrptrên /home/file.


3
Không rõ liệu bạn đang hỏi về việc bảo vệ các quyền nguồn hay các quyền đích. Bạn cũng đã spam trang web tới SuperUser.
Tom Shaw

Đối với bản ghi, các tùy chọn "bảo quản" có liên quan đến nguồn . cp -plàm cho các thuộc tính đích khớp (do đó bảo tồn) các thuộc tính nguồn.
mpersico

1
Tôi chỉ vấp vào trang này. cp theo mặc định phải duy trì quyền của người dùng và nhóm tệp: vì nó mở mục tiêu trong chế độ cập nhật và giữ lại nút của nó. Vì vậy, tôi không rõ lý do tại sao các câu trả lời không chỉ ra điều này.
dozer

Câu trả lời:


30

Nếu bạn chỉ mở hướng dẫn chocp ...

Tiếp theo sẽ không ghi đè quyền truy cập tệp và quyền sở hữu + nhóm:

cp --no-preserve=mode,ownership /tmp/file /home/file

Lưu ý rằng các đặc quyền gốc là cần thiết nếu bạn muốn duy trì quyền sở hữu và nhóm.

Một đoạn trích từ hướng dẫn:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all

Không chính xác những gì tác giả muốn. --no-preservecó ý nghĩa nếu được sử dụng sau --preserve(hoặc bí danh của nó), nếu không nó không ảnh hưởng đến hành vi của cp. Tác giả muốn giữ chế độ tệp của tệp mục tiêu hiện có và chỉ ghi đè lên nội dung của nó
lưu vực

Vd: thay thế khóa máy chủ ssh cp --no-preserve=mode,ownership ssh* /etc/ssh/. Điều này làm cho các khóa bí mật có thể đọc được trên thế giới.
lưu vực

Giải thích - bảo mật của trang man là IMHO vô nghĩa vì nó không làm cho nó rõ ràng bảo tồn những gì: Các thuộc tính nguồn hoặc đích
Waslap


0

Hoặc bạn có thể sử dụng chương trình cài đặt thậm chí tốt hơn từ lõi GNU được tạo ra cho mục đích cụ thể này. Xin lưu ý rằng nó không thể lặp lại (không có tùy chọn -R hoặc -r).

http://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html


1
Tôi đã không thấy một công tắc cho việc này để bảo vệ người hoặc nhóm của mục tiêu. Chỉ cần buộc nó đến một giá trị mới.
Pete

0

Đặc biệt --no-preserve, đừng sử dụng các công tắc liên quan đến quyền , bởi vì nó hoạt động kỳ lạ:

tốt:

[il@localhost Downloads]$ sudo cp ssh_host_* /etc/ssh/
[il@localhost Downloads]$ ls -l /etc/ssh
total 604
-rw-r--r--  1 root root     581843 Oct 20  2017 moduli
-rw-r--r--  1 root root       2276 Oct 20  2017 ssh_config
-rw-------  1 root root       3907 Oct 20  2017 sshd_config
-rw-r-----. 1 root ssh_keys    227 Oct  2 12:26 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        172 Oct  2 12:26 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    411 Oct  2 12:26 ssh_host_ed25519_key
-rw-r--r--. 1 root root        100 Oct  2 12:26 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys   1679 Oct  2 12:26 ssh_host_rsa_key
-rw-r--r--. 1 root root        392 Oct  2 12:26 ssh_host_rsa_key.pub

xấu:

[il@localhost Downloads]$ sudo cp --no-preserve=mode,ownership ssh_host_* /etc/ssh/
[il@localhost Downloads]$ ls -l /etc/ssh
total 604
-rw-r--r--  1 root root     581843 Oct 20  2017 moduli
-rw-r--r--  1 root root       2276 Oct 20  2017 ssh_config
-rw-------  1 root root       3907 Oct 20  2017 sshd_config
-rw-r--r--. 1 root ssh_keys    227 Oct  2 12:27 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        172 Oct  2 12:27 ssh_host_ecdsa_key.pub
-rw-r--r--. 1 root ssh_keys    411 Oct  2 12:27 ssh_host_ed25519_key
-rw-r--r--. 1 root root        100 Oct  2 12:27 ssh_host_ed25519_key.pub
-rw-r--r--. 1 root ssh_keys   1679 Oct  2 12:27 ssh_host_rsa_key
-rw-r--r--. 1 root root        392 Oct  2 12:27 ssh_host_rsa_key.pub

0

Các cp không ghi đè quyền theo mặc định. Nếu bạn muốn đảm bảo quyền sẽ không bị ghi đè, hãy sử dụng

cp --preserve=mode,ownership /tmp/file /target_dir_where_file_resides
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.