Гид по технологиям

Как сохранить права доступа к файлам при копировании в Linux

5 min read Linux Обновлено 06 Jan 2026
Сохранить права файлов при копировании в Linux
Сохранить права файлов при копировании в Linux

Схема: сохранение прав доступа при копировании в Linux

Файловые права — часть спецификации Unix. При копировании создаётся новый файл, поэтому его права формируются заново под влиянием umask текущего пользователя и возможностей целевой файловой системы. В результате копии могут получить другие права, владельца или потерять расширенные атрибуты.

Ниже — простые способы сохранить права и связанные атрибуты при копировании в Linux, а также проверка и частые причины, когда этого не происходит.

Коротко о ключевых понятиях

  • umask — маска, определяющая какие биты прав отключать при создании нового файла.
  • ACL — дополнительные списки управления доступом (Access Control Lists).
  • xattr — расширенные атрибуты, используемые для метаданных (например, метки SELinux).
  • Файловая система — некоторые FS (FAT32, vfat) не поддерживают Unix-права.

Сохранение прав с помощью cp

Команда cp поддерживает несколько режимов для сохранения атрибутов:

  • cp -p — сохраняет режим (права), владельца и временные метки.
  • cp -rp — рекурсивно копирует директории и сохраняет атрибуты.
  • cp -a — режим Archive: эквивалентно -dR –preserve=all; сохраняет символьные ссылки, права, владельца, временные метки и контексты, если возможно.

Примеры:

cp -p source-file dest-file
cp -rp source-dir/ dest-dir/
cp -a source-dir/ dest-dir/

Используйте cp -a для локального копирования, когда нужно максимально сохранить состояние исходной директории. Обратите внимание: при копировании между разными машинами cp не применяется — для этого используйте rsync или scp.

Команда cp: пример сохранения прав и времени файлов

Сохранение прав с помощью rsync

rsync часто предпочтительнее для больших объёмов и синхронизации. Его баллы силы: копирует только изменённые части файлов, умеет работать по SSH и имеет гибкие опции для сохранения разных типов метаданных.

Базовый синтаксис для сохранения прав:

rsync -a source-dir/ dest-dir/

Флаг -a (архив) эквивалентен набору опций, включающих рекурсивность, сохранение прав, времён, владельца и групп. Для полного сохранения всех атрибутов и поведения, особенно при переносе на другой Linux-хост, используйте набор:

rsync -aHAX --numeric-ids source-dir/ dest-dir/
  • -H сохраняет жёсткие ссылки.
  • -A сохраняет ACL.
  • -X сохраняет расширенные атрибуты (xattr), включая метки SELinux.
  • –numeric-ids использует числовые uid/gid без попыток разрешить имена — полезно при переносе между машинами с разными базами пользователей.

Для удобного вывода добавьте -v (verbose) и -h (human-readable):

rsync -avh source-dir/ dest-dir/

Внимание к слэшу в конце: source-dir/ означает «содержимое каталога», а source-dir (без слэша) — сам каталог как элемент. Аналогично для dest: лишний или отсутствующий слэш меняет структуру результата.

Команда rsync: пример сохранения прав при синхронизации

Пример удалённого копирования по SSH

rsync -aHAX --numeric-ids -e ssh user@remote:/path/to/source/ /local/path/

Это предпочтительнее scp, если важно сохранить сложные атрибуты и ускорить последующие синхронизации.

Проверка прав после копирования

Проверьте права и ACL следующими командами:

ls -l path/to/file            # краткий список прав и владельца
stat path/to/file            # подробная информация о файле
getfacl path/to/file         # вывод ACL, если есть
getfacl source-file
getfacl dest-file

Проверка прав: пример вывода getfacl

Дополнительно: для SELinux проверьте getenforce и ls -Z.

Частые причины, почему права не сохраняются

  • Целевая файловая система не поддерживает Unix-права (например, vfat, FAT32).
  • umask на целевой машине «режет» создаваемые биты при использовании инструментов, которые не сохраняют права.
  • Копирование между машинами с разными UID/GID: владельцы будут отображаться по числам или маппиться неправильно без –numeric-ids.
  • Отсутствие прав root: смена владельца (chown) при копировании требует привилегий.
  • Потеря ACL/xattr если использовалась команда без соответствующих опций (rsync без -A/-X, cp без –preserve=xattr).

Альтернативные подходы

  • scp — простой способ для безопасной пересылки файлов между хостами, но он не сохраняет ACL и xattr.
  • tar | ssh — упаковка в tar сохраняет структуры и атрибуты; полезно для переноса между машинами и при копировании на файловые системы, поддерживающие атрибуты:
cd /source/dir && tar cf - . | ssh user@host 'cd /dest/dir && tar xpf -'
  • rsync + snapshot/backup tools — для регулярных резервных копий пользуйтесь инструментами, которые сохраняют метаданные и умеют инкрементально восстанавливать.

Когда метод не сработает: примеры

  • Копирование файлов с SELinux метками на vfat-диск — метки будут потеряны.
  • Перенос системных файлов между машинами с разной UID-базой без –numeric-ids — владельцы поменяются.
  • Резервное копирование от непривилегированного пользователя: chown не выполнится, и владельцы останутся другими.

Мини‑методология: что делать по шагам

  1. Оцените, какие атрибуты нужно сохранить: права, владелец, ACL, xattr/SELinux, жёсткие ссылки.
  2. Выберите инструмент: cp для простых локальных задач, rsync для масштабных и сетевых копий, tar для переносов с упаковкой.
  3. Соберите команду: rsync -aHAX –numeric-ids для большинства случаев.
  4. Выполните тестовую копию на небольшой наборе файлов.
  5. Проверьте через ls -l, getfacl, stat и (при SELinux) ls -Z.
  6. После успешного теста применяйте к реальным данным и автоматизируйте с учётом прав доступа.

Контрольные списки по ролям

  • Системный администратор:

    • Использовать rsync -aHAX –numeric-ids.
    • Запуск от root при необходимости сохранить владельцев.
    • Тестировать и документировать карту UID/GID между хостами.
  • Разработчик / DevOps:

    • Для локального копирования использовать cp -a.
    • Для CI/CD — включать проверки getfacl в пайплайне.
  • Оператор резервного копирования:

    • Выбирать инструмент, поддерживающий инкрементальное восстановление.
    • Учитывать поддержку ACL и xattr при хранении бэкапов.

Безопасность и приватность

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

Краткая таблица опций (факто‑бокс)

  • cp -p — права, владелец, временные метки
  • cp -a — архивный режим, сохраняет всё, что возможно
  • rsync -a — базовый архивный режим
  • rsync -aHAX –numeric-ids — сохраняет права, ACL, xattr, жёсткие ссылки, использует числовые uid/gid

Короткий словарь (1 строка)

  • umask: маска, отключающая биты прав при создании файла.
  • ACL: расширенные списки управления доступом.
  • xattr: расширенные атрибуты файла (метаданные).
  • SELinux: подсистема безопасности, добавляющая метки безопасности.

Рекомендации по тестированию

  • Тестовый сценарий: выберите папку с обычными файлами, ACL и xattr; скопируйте на целевой диск и сравните ls -l, getfacl и getfattr.
  • При сетевом переносе протестируйте с –numeric-ids и без, чтобы увидеть разницу в отображении владельцев.

Important: Всегда выполняйте тестовую копию и проверку прав перед массовой операцией на продакшн-данных.

Итог: для большинства задач нужен rsync с опциями -aHAX –numeric-ids; для простых локальных копий cp -a отлично подходит. После копирования проверяйте права и дополнительные атрибуты командами ls, stat и getfacl.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство