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

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

$ 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 ... 

One Solution collect form web for “Перемещение сохраняет права собственности на исходные файлы, не позволяя делать записи”

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

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

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

  • Сообщение об ошибке скрипта в одной строке
  • команда прогресса не показывает прогресс mv
  • Перемещение уникальных файлов из папки с дубликатами файлов
  • Список (или перемещение) только файлов с определенным количеством строк?
  • Отклонить разрешение на перемещение мягкой ссылки
  • перемещение (файл | каталог), избегая конфликтов имен файлов
  • Как рекурсивно перемещать партии из 20 файлов в пронумерованные папки из папки из 1000 файлов
  • Переместите все файлы из одной папки в другую, на основе списка
  • Как я могу перемещать файлы и просматривать прогресс (например, с индикатором выполнения)?
  • Будет ли у `mv` возможность создавать каталоги?
  • Перемещение / usr / lib без нарушения всего
  • Linux и Unix - лучшая ОС в мире.