Назад | Перейти на главную страницу

Сохраняет ли tar разрешения при изменении идентификаторов пользователей?

Мне нужно сделать резервную копию некоторых данных с помощью параметра «p» в команде tar. Проблема в том, что в том месте, где я собираюсь восстановить эти данные, будут все те же пользователи, но у этих пользователей могут быть разные идентификаторы. Имеет ли это какое-либо значение для tar или он будет правильно восстанавливать разрешения по имени пользователя?

Подытоживая предыдущие ответы и добавляя важную информацию:

  • При создании архивов tar всегда сохранит идентификатор пользователя и группы файлов, если только сказал иначе с --owner=NAME, --group=NAME. Но, тем не менее, с каждым файлом всегда будут связаны пользователь и группа.

  • GNU tar и, возможно, другие версии tar, также сохранить пользователя и группу имена, если только --numeric-owner используется. bsdtar также сохраняет имена пользователей и групп по умолчанию, но поддерживает --numeric-owner вариант, когда создание не появлялся до bsdtar 3.0 (обратите внимание, что bsdtar поддерживает параметр, когда извлечение намного дольше).

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

  • При извлечении как корень, tar по умолчанию восстанавливает право собственности на извлеченные файлы, если только --no-same-owner используется, что дает право собственности самому root.

  • В GNU tar, bsdtar и, возможно, в других версиях tar, право владения восстановлено пользователем (и группой) название, если эта информация есть в архиве и в целевой системе есть соответствующий пользователь. В противном случае восстанавливается по ID. Если --numeric-owner предоставляется опция, имена пользователей и групп игнорируются.

  • Разрешения и отметки времени также сохраняются в архиве и восстанавливаются по умолчанию, если не указано иное. --no-same-permissions и / или --touch используются. При извлечении пользователем пользовательский umask является вычтенный из разрешений, если --same-permissions используется.

  • --preserve-permissions и --same-permissions являются псевдонимами и имеют ту же функциональность, что и -p

Надеюсь, это поможет прояснить проблему! :)

tar записывает разрешения на основе UID и GID, а не связанной с ними строки. Таким образом, если UID на одном сервере был 3300 и он был связан с 'bob', на новом сервере файл будет принадлежать пользователю с UID 3300.

Виртуальное все (я хочу сказать все, но вы никогда не можете быть уверены на 100%) в UNIX использует значения UID: GID, потому что это то, что фактически хранится на уровне файловой системы. Имя представляет собой простой поиск в файле passwd, основные проверки выполняются с использованием числовых значений.

Используйте параметр --same-owner для GNU tar. Видеть http://www.gnu.org/software/tar/manual/html_section/Attributes.html

Если вы пытаетесь передать файлы между двумя системами, rsync по умолчанию установит разрешения по имени пользователя вместо uid, глядя на имена пользователей с обеих сторон. Только если пользователь не существует в одной из систем, он скопирует его с uid, если вы не укажете иное.