Frage cp + will keine Berechtigungen überschreiben


Wie benutzt du das? cp Befehl, ohne die Berechtigungen der Zieldatei zu ändern? Zum Beispiel:

cp /tmp/file   /home/file

Ich möchte mich nicht ändern chown und chgrp auf /home/file.


20
2018-05-26 06:55


Ursprung


Es ist nicht klar, ob Sie die Quellberechtigungen oder die Zielberechtigungen beibehalten möchten. Sie haben auch Cross-Site-Spam an SuperUser gesendet. - Tom Shaw
Zur Erinnerung, die "Erhaltung" Optionen sind in Bezug auf die Quelle. cp -p sorgt dafür, dass die Zielattribute den Quellattributen entsprechen (und dadurch erhalten bleiben). - mpersico
Ich bin gerade auf diese Seite gestoßen. CP standardmäßig sollte die Zieldateien Berechtigungen und Benutzer: Gruppe beibehalten, da es das Ziel im Update-Modus öffnet und seinen Inode beibehalten. Also ist mir nicht klar, warum die Antworten darauf nicht hinweisen. - dozer


Antworten:


Wenn Sie nur geöffnet haben das Handbuch für cp...

Der nächste überschreibt nicht die Dateiberechtigungen und Eigentümerschaft + Gruppenmitgliedschaft:

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

Beachten Sie, dass Root-Berechtigungen erforderlich sind, wenn Sie die Eigentümerschaft und die Gruppenverwaltung beibehalten möchten.

Ein Auszug aus dem Handbuch:

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

28
2018-05-26 07:23



Nicht genau das, was der Autor wollte. --no-preserve macht Sinn, wenn es danach verwendet wird --preserve (oder seine Aliase), ansonsten beeinflusst es nicht das Verhalten von cp. Der Autor wollte den Dateimodus einer vorhandenen Zieldatei beibehalten und nur dessen Inhalt überschreiben - basin
Beispiel: Ersetze SSH-Hostschlüssel cp --no-preserve=mode,ownership ssh* /etc/ssh/. Dies macht die geheimen Schlüssel weltweit lesbar. - basin


cat wird auch funktionieren:

cat /tmp/file > /home/file

8
2018-05-26 08:32





Oder du kannst es noch besser gebrauchen Installieren Programm von GNU Coreutils, das für diesen speziellen Zweck gemacht wurde. Bitte beachten Sie, dass es nicht rekursiv ist (keine Option -R oder -r).

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


0
2018-06-03 14:40



Ich habe keinen Schalter dafür gesehen, um das Ziel oder die Gruppe zu erhalten. Erzwinge es einfach auf einen neuen Wert. - Pete


Verwenden Sie insbesondere keine berechtigungsbezogenen Schalter --no-preserveweil es sich seltsam verhält:

gut:

[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

Schlecht:

[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
2017-10-02 09:41





Das cp überschreibt Berechtigungen standardmäßig nicht. Wenn Sie sicherstellen möchten, dass die Berechtigung nicht überschrieben wird, verwenden Sie

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

0
2017-10-21 09:07