cp + não deseja sobrescrever permissões

23

Como você usa o cpcomando sem alterar as permissões do arquivo de destino? Por exemplo:

cp /tmp/file   /home/file

Eu não quero mudar chowne chgrpon /home/file.

David
fonte
3
Não está claro se você está perguntando sobre preservar as permissões de origem ou de destino. Você também enviou spam entre sites para o SuperUser.
Tom Shaw
Para o registro, as opções de "preservação" estão em referência à fonte . cp -pfaz com que os atributos de destino correspondam (preservando assim) os atributos de origem.
Mpersico
1
Eu apenas tropecei nesta página. Por padrão, o cp deve preservar as permissões dos arquivos de destino e o grupo user: porque ele abre o destino no modo de atualização e mantém seu inode. Portanto, não está claro para mim por que as respostas não indicam isso.
Dozer

Respostas:

30

Se você abriu o manual apenas paracp ...

O próximo não substituirá as permissões do arquivo e a propriedade + associação de grupo:

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

Observe que privilégios de root são necessários se você deseja preservar a propriedade e a associação de grupos.

Um trecho do manual:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all
Lekensteyn
fonte
Não é exatamente o que o autor queria. --no-preservefaz sentido se usado depois --preserve(ou seus aliases), caso contrário, não afeta o comportamento de cp. O autor queria manter o modo de arquivo de um arquivo de destino existente e substituir somente seu conteúdo
bacia
Ex: substitua as chaves do host ssh cp --no-preserve=mode,ownership ssh* /etc/ssh/. Isso torna as chaves secretas legíveis pelo mundo.
bacia
A explicação --preserve da página de manual é IMHO sem sentido, pois não deixa claro preservar o que: Os atributos de origem ou destino
Waslap
10

cat também funcionará:

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

Não use opções relacionadas à permissão, especialmente --no-preserveporque se comporta de maneira estranha:

Boa:

[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

ruim:

[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
bacia
fonte
0

O cp não substitui as permissões por padrão. Se você quiser garantir que a permissão não seja substituída, use

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