cp + не хочу перезаписувати дозволи


23

Як ви використовуєте cpкоманду, не змінюючи дозволів цільового файлу? Наприклад:

cp /tmp/file   /home/file

Я не хочу , щоб змінити chownі chgrpна /home/file.


3
Незрозуміло, чи питаєте ви про збереження вихідних дозволів чи цільових дозволів. Ви також перехрестили сайти на SuperUser.
Том Шоу

Для запису параметри "збереження" посилаються на джерело . cp -pзмушує цільові атрибути збігатися (тим самим зберігаючи) вихідні атрибути.
mpersico

1
Я просто натрапив на цю сторінку. cp за замовчуванням повинен зберегти цільові файли, дозволи та користувач: група, тому що вона відкриває ціль у режимі оновлення та зберігає свій inode. Тому мені незрозуміло, чому відповіді цього не вказують.
бульдозер

Відповіді:


30

Якщо ви лише відкрили посібник дляcp ...

Наступне не замінить дозволи на файли та права власності + групування:

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

Зауважте, що кореневі привілеї потрібні, якщо ви хочете зберегти право власності та групування.

Уривок з посібника:

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

Не зовсім те, чого хотів автор. --no-preserveмає сенс, якщо він використовується після --preserve(або його псевдоніми), інакше це не впливає на поведінку cp. Автор хотів зберегти файловий режим наявного цільового файлу і лише перезаписати його вміст
басейн

Наприклад: замінити ssh хости cp --no-preserve=mode,ownership ssh* /etc/ssh/. Це робить секретні ключі в усьому світі зрозумілими.
басейн

Сторінка чоловічої сторінки - збереження пояснення IMHO є безглуздим, оскільки це не дає зрозуміти зберегти що: Джерело або цільові атрибути
Waslap


0

Або ви можете скористатися ще кращою програмою встановлення з GNU coreutils, яка була зроблена саме для цієї мети. Зверніть увагу, вона не може повторитись (немає -R або -r варіант).

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


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.