cp + ไม่ต้องการเขียนทับการอนุญาต


23

คุณจะใช้cpคำสั่งโดยไม่เปลี่ยนสิทธิ์ของไฟล์เป้าหมายได้อย่างไร ตัวอย่างเช่น:

cp /tmp/file   /home/file

ฉันไม่ต้องการที่จะเปลี่ยนแปลงchownและ บนchgrp/home/file


3
ยังไม่ชัดเจนว่าคุณจะถามเกี่ยวกับการสงวนสิทธิ์แหล่งที่มาหรือสิทธิ์เป้าหมาย คุณได้ข้ามสแปมไปยัง SuperUser ด้วย
Tom Shaw

สำหรับบันทึกที่ "การดูแลรักษา" มีตัวเลือกในการอ้างอิงถึงแหล่งที่มา cp -pทำให้แอตทริบิวต์เป้าหมายตรงกัน (ซึ่งช่วยรักษา) แอตทริบิวต์ของแหล่งที่มา
mpersico

1
ฉันเพิ่งเจอหน้านี้ cp โดยค่าเริ่มต้นควรจะสงวนสิทธิ์ไฟล์เป้าหมายและผู้ใช้: กลุ่มเพราะจะเปิดเป้าหมายในโหมดอัปเดตและเก็บไอโหนดของมันไว้ ดังนั้นจึงไม่ชัดเจนสำหรับฉันว่าทำไมคำตอบไม่ได้ระบุนี้
รถดันดิน

คำตอบ:


30

หากคุณเปิดคู่มือสำหรับcp ...

ถัดไปจะไม่เขียนทับสิทธิ์ของไฟล์และการเป็นเจ้าของ + กลุ่ม:

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

โปรดทราบว่าจำเป็นต้องมีสิทธิ์ใช้งานรูทหากคุณต้องการรักษาความเป็นเจ้าของและกลุ่ม

ข้อความที่ตัดตอนมาจากคู่มือ:

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

ไม่ตรงตามที่ผู้เขียนต้องการ --no-preserveทำให้รู้สึกว่าใช้หลัง--preserve(หรือนามแฝงของมัน) cpมิฉะนั้นจะไม่ได้ส่งผลกระทบต่อการทำงานของ ผู้เขียนต้องการที่จะให้โหมดไฟล์ของไฟล์เป้าหมายที่มีอยู่และเขียนทับเนื้อหาของมันเท่านั้น
อ่าง

Ex: cp --no-preserve=mode,ownership ssh* /etc/ssh/เปลี่ยนคีย์โฮสต์ นี่ทำให้ปุ่มลับสามารถอ่านได้ทั่วโลก
อ่าง

คำอธิบาย --preserve ของ man page นั้นไร้สาระ IMHO เนื่องจากมันไม่ได้ทำให้ชัดเจนว่า: แหล่งข้อมูลหรือแอตทริบิวต์เป้าหมาย
Waslap


0

หรือคุณสามารถใช้โปรแกรมติดตั้งที่ดียิ่งขึ้นจาก GNU coreutils ที่สร้างขึ้นเพื่อวัตถุประสงค์เฉพาะนี้ โปรดทราบว่ามันไม่สามารถเรียกคืนได้ (ไม่มีตัวเลือก -R หรือ -r)

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


1
ฉันไม่เห็นสวิตช์นี้เพื่อรักษา ower หรือกลุ่มของเป้าหมาย เพียงแค่บังคับให้เป็นค่าใหม่
Pete

0

อย่าใช้สวิตช์ที่เกี่ยวข้องกับการอนุญาตโดยเฉพาะอย่างยิ่ง--no-preserveเพราะมันทำงานผิดปกติ:

ดี:

[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

เลว:

[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

CPไม่แทนที่สิทธิ์โดยค่าเริ่มต้น หากคุณต้องการให้แน่ใจว่าการอนุญาตจะไม่ถูกแทนที่ให้ใช้

cp --preserve=mode,ownership /tmp/file /target_dir_where_file_resides
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.