How do you use the cp command without changing the target file's permissions? For example:

cp /tmp/file   /home/file

I don't want to change chown and chgrp on /home/file.

  • 3
    It's not clear whether you are asking about preserving the source permissions or the target permissions. You've also cross-site spammed to SuperUser. – Tom Shaw May 26 '11 at 9:00
  • For the record, the "preservation" options are in reference to the source. cp -p makes the target attributes match (thereby preserving) the source attributes. – mpersico Apr 20 '17 at 16:54
  • 1
    I just stumbled upon this page. cp by default ought to preserve the target files permissions and user:group because it opens the target in update mode and retaining its inode. So it's not clear to my why the answers don't indicate this. – dozer Apr 21 '17 at 11:58
up vote 28 down vote accepted

If you've only opened the manual for cp...

The next will not overwrite the file permissions and ownership + groupship:

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

Note that root privileges are needed if you want to preserve the ownership and groupship.

An excerpt from the manual:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all
  • Not exactly what the author wanted. --no-preserve makes sense if used after --preserve (or its aliases), otherwise it doesn't affect the behavior of cp. The author wanted to keep the file mode of an existing target file and only overwrite its contents – basin Oct 2 at 9:15
  • Ex: replace ssh host keys cp --no-preserve=mode,ownership ssh* /etc/ssh/. This makes the secret keys world-readable. – basin Oct 2 at 9:20

cat will work, too:

cat /tmp/file > /home/file

Or you can use even better install program from GNU coreutils that has been made for this particular purpose. Please note it is not able to recurse (no -R or -r option).

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

  • 1
    I didn't see a switch for this to preserve the target's ower or group. Just force it to a new value. – Pete Oct 7 '15 at 22:06

Don't use permission-related switches at all, especially --no-preserve, because it behaves strangely:

good:

[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

bad:

[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

The cp doesn't override permissions by default. If you want to make sure permission won't be overridden, use

cp --preserve=mode,ownership /tmp/file /target_dir_where_file_resides

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.