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


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


16
2017-10-19 06:47


Источник




Ответы:


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

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


9
2017-10-19 07:01



Ах, это не хорошо ... Думаю, в большинстве случаев это подходит. К сожалению, не для меня ... Спасибо, EightBitTony. - Marius
Вы, скорее всего, имеете в виду GID (идентификатор группы), а не идентификатор GUID (глобально уникальный идентификатор). - Michael Kjörling
Я сделал, спасибо .. - EightBitTony
GNU tar также сохраняет данные имени пользователя и группы, потому что я вижу это, если я перечислю архив на машине, у которой нет этих пользователей. Должен быть способ заставить его использовать его во время извлечения. - Rob H
Этот ответ просто неверен. tar  делает записывать имена владельцев. - Steffen Heil


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

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

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

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

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

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

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

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

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


46
2017-11-05 11:48



Отличный ответ; Отвечает на этот вопрос, а также на любой другой вопрос, который может возникнуть по этому вопросу. - user1107893
Следует отметить, что только последние версии GNU tar разрешить задание произвольных имен в --owner или --group, в прошлом tar сделал бесплатный поиск в текущей машине /etc/passwd и отказался бежать, если не было матча. - Matteo Italia
Что произойдет, если вы создадите архив с указанным именем с --owner но также добавляется в --numeric-owner флаг? Как дег справляется с этими конкурирующими требованиями? - CMCDragonkai
@CMCDragonkai: --owner а также --numeric-owner не являются взаимоисключающими и служат очень различным целям: --owner=USERNAME будет переопределять файлы и владельцы dirs при архивации файлов, в то время как --numeric-owner просто не сохранит имя пользователя, просто его числовой идентификатор. - MestreLion


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


4
2017-10-19 09:04



Это задокументировано как значение по умолчанию для суперпользователей и, похоже, отвечает на вопрос ОП иначе, чем принятый ответ. (Ссылка говорит, что когда GNU tar восстанавливает использование --same-owner, сначала он выглядит имена в / etc / passwd.) Единственная нерешенная проблема заключается в том, что версия OP для tar реализует - theame-owner. - Mike Sherrill 'Cat Recall'
OP использует какой-то Linux-дистрибутив настолько лучше, чем даже вероятность использования GNU tar, methinks. И по документации является возможно, хотя принятый ответ указывает, что это не ... - Colin 't Hart
@Catcall - извините, я принял ответ, даже не имея возможности проверить его. Иногда я просто слепо доверяю людям. Тем не менее, человек, который ответил, был прав, потому что я не восстанавливался с «-ame-owner», а затем вы добавили ответ. Слишком плохо, я не могу принять оба. Я использую debian squeeze, который действительно поддерживает «-sam-owner». Спасибо за совет. - Marius
@Marius: Я уверен, что вы можете изменить принятый ответ, когда захотите. (Я просто укажу, что я не дал никаких ответов на этот вопрос, только комментарии. У меня нет репутации на кону.) - Mike Sherrill 'Cat Recall'


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


4
2017-10-19 12:28



Это напрямую не отвечает на вопрос ОП, но любой, кто задает вопрос ОП, должен также изучить это. - Mike Sherrill 'Cat Recall'