Intereting Posts
Как проверить, что «ls» выводит что-то … с помощью одной команды? Два интерфейса, два адреса, два шлюза? Неправильно ли устанавливать оболочку корня в нечто иное, чем значение по умолчанию? Как извлекать уникальные значения в столбцах Пользовательское приветствие при входе в систему через ssh Поднял мой подсказку, что случилось? Что может произойти между pidof и kill, чтобы вызвать «нет такого процесса»? сборка массива mdadm вызывает зависание ядра SSH на сервер, выполнять команды и отдавать управление пользователю PPTP VPN в CentOS 7 Вариант запуска местоположения конфигурации Midnight Commander Самый простой способ прокомментировать / раскомментировать некоторые строки с помощью командной строки Как безопасно убивать процессы, чтобы перенаправление вывода не прерывалось? Что делать, если владелец / usr / bin / * изменяется на non-root? grep определенный формат, возможно ли это?

Перемещение сохраняет права собственности на исходные файлы, не позволяя делать записи

Пожалуйста, рассмотрите:

$ id # Me uid=100(user1) gid=200(group1) groups=200(group1) $ ls -l tnsnames.ora # So user1 has only read permission on below file. -rw-rw-r-- 1 oracle dba 411024 Jul 28 2010 tnsnames.ora $ cp tnsnames.ora tnsnames.ora_bak $ cat tnsnames.ora_bak > tnsnames.ora # No write access -bash: tnsnames.ora: Permission denied $ cp -p tnsnames.ora tnsnames.ora_copy # Copy file and preserve mode, ownership, timestamps. Requires sudo to succeed completely. $ ls -l tnsnames.ora_copy # Mode and timestamps preserved; ownership not preserved. -rw-rw-r-- 1 user1 group1 411024 Jul 28 2010 tnsnames.ora_copy $ mv tnsnames.ora tnsnames.ora_move $ ls -l tnsnames.ora_move # Move preserves mode, ownership, timestamps. -rw-rw-r-- 1 oracle dba 411024 Jul 28 2010 tnsnames.ora_move $ 

Обновить

 $ ls -l # As pointed out by @Gilles, the source (which is also the destination here) directory has rx mode which allows mv to work. drwxrwxrwx 3 oracle dba 4096 Aug 11 20:38 oracle 

  1. Как команда mv может перемещать файл и сохранять режим, владение, временные метки, пока мы не можем сделать то же самое с cp …?
  2. Также, если у вас нет доступа на запись к файлу, как можно изменить местоположение (метаданные) файла с помощью mv ; или мы можем посмотреть на это по-другому … где mv сначала сделает копию файла, тогда как он получит права на установку владельца / группы в скопированном файле и удаление исходного файла, в котором у него нет записи разрешений на ..

Информация о версии OS / Bash / Utility:

 $ echo $SHELL /bin/bash $ bash --version GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) ... $ uname -a Linux server1 2.6.18-371.8.1.el5 #1 SMP Fri Mar 28 05:53:58 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux $ cp --version cp (GNU coreutils) 5.97 ... $ mv --version mv (GNU coreutils) 5.97 ... 

mv не создает копию файла и не удаляет оригинал, если вы не перемещаете файл между разными файловыми системами. mv перемещает файл.

Чтобы переместить файл, вам необходимо иметь разрешение на его отсоединение из каталога, где он был раньше, и прикрепить его к каталогу, в который вы его помещаете. Другими словами, вам необходимо написать (и выполнить) разрешение как для исходного каталога, так и для целевого каталога. Вам не нужно иметь какое-либо конкретное разрешение на файл, так как вы не изменяете или не получаете доступ к самому файлу. (Аналогия: вы можете переместить заблокированный ящик, даже если у вас нет ключа, чтобы открыть окно.)

cp -p может и сохраняет права доступа к файлу, но он не может сохранить права собственности на файл в целом. Поскольку вы не используете cp как root, он не может создавать файлы, которые не принадлежат вам, или которые не принадлежат к группе, к которой вы принадлежите.