cp + nie chce zastępować uprawnień

23

Jak korzystać z cppolecenia bez zmiany uprawnień do pliku docelowego? Na przykład:

cp /tmp/file   /home/file

Nie chcę, aby zmienić chowni chgrpna /home/file.

David
źródło
3
Nie jest jasne, czy pytasz o zachowanie uprawnień źródłowych czy docelowych. Przesyliłeś również spam do witryny SuperUser.
Tom Shaw
Dla przypomnienia opcje „zachowania” odnoszą się do źródła . cp -pdopasowuje atrybuty docelowe (zachowując w ten sposób) atrybuty źródłowe.
mpersico,
1
Właśnie natknąłem się na tę stronę. cp domyślnie powinien zachować uprawnienia do plików docelowych i user: group, ponieważ otwiera cel w trybie aktualizacji i zachowuje swój i-węzeł. Nie jest więc dla mnie jasne, dlaczego odpowiedzi na to nie wskazują.
spycharka

Odpowiedzi:

30

Jeśli tylko otworzyłeś instrukcję dlacp ...

Następny nie zastąpi uprawnień do plików i własności + praca grupowa:

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

Pamiętaj, że uprawnienia roota są potrzebne, jeśli chcesz zachować własność i pracę grupową.

Fragment instrukcji:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all
Lekensteyn
źródło
Niezupełnie to, czego chciał autor. --no-preservema sens, jeśli zostanie użyty po --preserve(lub jego aliasach), w przeciwnym razie nie wpłynie na zachowanie cp. Autor chciał zachować tryb pliku istniejącego pliku docelowego i nadpisać tylko jego zawartość
basen
Np .: zamień klucze hosta ssh cp --no-preserve=mode,ownership ssh* /etc/ssh/. Dzięki temu tajne klucze są czytelne na całym świecie.
dorzecze
Wyjaśnienie strony podręcznika - zachowaj wyjaśnienie jest niedorzeczne przez IMHO, ponieważ nie wyjaśnia, że ​​zachowuje co: Atrybuty źródła lub celu
Waslap
10

cat też będzie działać:

cat /tmp/file > /home/file
Cakemox
źródło
0

W ogóle nie używaj przełączników związanych z uprawnieniami, zwłaszcza --no-preserveże zachowuje się dziwnie:

dobry:

[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

zły:

[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
basen
źródło
0

Cp nie zastępują uprawnienia domyślnie. Jeśli chcesz mieć pewność, że pozwolenie nie zostanie zastąpione, użyj

cp --preserve=mode,ownership /tmp/file /target_dir_where_file_resides
rok
źródło