cp + no quiere sobrescribir permisos

23

¿Cómo se usa el cpcomando sin cambiar los permisos del archivo de destino? Por ejemplo:

cp /tmp/file   /home/file

No quiero cambiar chowny chgrpseguir /home/file.

David
fuente
3
No está claro si está preguntando sobre la conservación de los permisos de origen o los permisos de destino. También ha enviado spam entre sitios a SuperUser.
Tom Shaw
Para el registro, las opciones de "preservación" son en referencia a la fuente . cp -phace que los atributos de destino coincidan (preservando así) los atributos de origen.
mpersico
1
Me topé con esta página. cp por defecto debería preservar los permisos de los archivos de destino y el usuario: grupo porque abre el objetivo en modo de actualización y conserva su inodo. Entonces no está claro para mí por qué las respuestas no indican esto.
dormilón

Respuestas:

30

Si solo ha abierto el manual paracp ...

El siguiente no sobrescribirá los permisos del archivo y la propiedad + grupo:

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

Tenga en cuenta que los privilegios de root son necesarios si desea preservar la propiedad y la agrupación.

Un extracto del manual:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all
Lekensteyn
fuente
No es exactamente lo que el autor quería. --no-preservetiene sentido si se usa después --preserve(o sus alias), de lo contrario no afecta el comportamiento de cp. El autor quería mantener el modo de archivo de un archivo de destino existente y solo sobrescribir su contenido
cuenca
Ej: reemplazar las claves de host ssh cp --no-preserve=mode,ownership ssh* /etc/ssh/. Esto hace que las claves secretas sean legibles en todo el mundo.
Cuenca
La explicación de la página de manual - preservar no tiene sentido en mi humilde opinión, ya que no deja en claro preservar qué: los atributos de origen o destino
Waslap
10

cat también funcionará:

cat /tmp/file > /home/file
Cakemox
fuente
0

No utilice interruptores relacionados con permisos en absoluto, especialmente --no-preserve, porque se comporta de manera extraña:

bueno:

[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

malo:

[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
cuenca
fuente
0

El cp no anula los permisos por defecto. Si desea asegurarse de que no se anule el permiso, use

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