cp + не хочет перезаписывать разрешения

23

Как вы используете cpкоманду без изменения прав доступа к целевому файлу? Например:

cp /tmp/file   /home/file

Я не хочу меняться chownи так chgrpдалее /home/file.

Дэвид
источник
3
Не ясно, спрашиваете ли вы о сохранении исходных разрешений или целевых разрешений. Вы также рассылали спам по нескольким сайтам в SuperUser.
Том Шоу
Для записи, варианты «сохранения» относятся к источнику . cp -pделает целевые атрибуты совпадающими (тем самым сохраняя) исходные атрибуты.
mpersico
1
Я просто наткнулся на эту страницу. cp по умолчанию должен сохранить права доступа к целевым файлам и user: group, потому что он открывает цель в режиме обновления и сохраняет ее inode. Поэтому мне не понятно, почему ответы не указывают на это.
бульдозер

Ответы:

30

Если вы только открыли руководство дляcp ...

Следующее не будет перезаписывать файл прав доступа и владения + групповой:

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

Обратите внимание, что привилегии root необходимы, если вы хотите сохранить право собственности и групповую принадлежность.

Выдержка из руководства:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all
Lekensteyn
источник
Не совсем то, что хотел автор. --no-preserveимеет смысл, если используется после --preserve(или его псевдонимов), иначе это не влияет на поведение cp. Автор хотел сохранить файловый режим существующего целевого файла и перезаписать только его содержимое
таз
Пример: заменить ключи хоста ssh cp --no-preserve=mode,ownership ssh* /etc/ssh/. Это делает секретные ключи понятными для всех.
бассейн
Объяснение справочной страницы --preserve ИМХО бессмысленно, поскольку не дает четкого представления о том, что сохранять: исходные или целевые атрибуты
Waslap
10

cat тоже будет работать

cat /tmp/file > /home/file
Cakemox
источник
0

Или вы можете использовать еще лучшую программу установки из GNU coreutils, которая была сделана для этой конкретной цели. Обратите внимание, что он не может выполнять рекурсию (без опции -R или -r).

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

lzap
источник
1
Я не видел переключателя для сохранения силы цели или группы. Просто приведите его к новому значению.
Пит
0

Ни в коем случае не используйте переключатели, связанные с разрешениями, особенно --no-preserveпотому, что они ведут себя странно:

хорошо:

[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

Плохо:

[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

По умолчанию cp не отменяет разрешения. Если вы хотите убедиться, что разрешение не будет переопределено, используйте

cp --preserve=mode,ownership /tmp/file /target_dir_where_file_resides
ROK
источник