Я хотел бы создать файл tar с содержимым, принадлежащим паре владелец: группа, которой нет в системе, из которой создается файл.
Вот направление, которое я пробовал:
tar ca --owner='otherowner' --group='othergroup' mydata.tgz mydata
И при выполнении этой команды я получаю следующую ошибку:
tar: otherowner: Invalid owner
tar: Error is not recoverable: exiting now
Есть ли способ заставить tar принять владельца: группу, даже если ни один из них не существует в системе, из которой создается файл?
permissions
users
tar
Дэвид
источник
источник
Ответы:
В Linux используются не внутренние имена владельцев и групп, а номера - UID и GID. Имена пользователей и групп сопоставлены с содержимым файлов / etc / passwd и / etc / group для удобства пользователя. Поскольку у вас нет записи «otherowner» ни в одном из этих файлов, Linux фактически не знает, какие UID и GID должны быть назначены файлу. Давайте попробуем передать число вместо:
Вроде работает.
источник
-tvf
флагов. Чтобы просмотреть текущие номера файлов в архиве, используйте команду, подобную этой:$ tar --numeric-owner -tvf archive.tar
--numeric-owner
флага. Что еще интереснее, вы можете установить оба с помощью--owner=name:1234
или--group=groupname:4711
. Источник: функция parse_owner_group исходного кода tarДобавьте параметры
--no-same-owner --no-same-permissions
сtar
. Посмотрите на документы .источник
Вот фрагмент кода для замены пользователя / группы на id на лету:
источник