Linux не использует внутренне владельцев и имена групп, но числа - UIDs и ЦЕНУРОЗЫ. Пользователи и имена групп отображаются от содержания/etc/passwd и/etc/group файлов для удобства пользователя. Так как у Вас нет 'otherowner' записи ни в одном из тех файлов, Linux на самом деле не знает, который UID и GID должны быть присвоены файлу. Давайте попытаемся передать число вместо этого:
$ tar cf archive.tar test.c --owner=0 --group=0
$ tar -tvf archive.tar
-rw-rw-r-- root/root 45 2013-01-10 15:06 test.c
$ tar cf archive.tar test.c --owner=543543 --group=543543
$ tar -tvf archive.tar
-rw-rw-r-- 543543/543543 45 2013-01-10 15:06 test.c
Это, кажется, работает.
Вот кусок кода для замены пользователя/группы на ids на лету:
tar ca --owner="$(id -u ***otherowner***)" --group="$(id -g ***othergroup***)" mydata.tgz mydata
Добавьте параметры --no-same-owner --no-same-permissions
с tar
. Взгляните на документацию .
-tvf
флаги. Для просмотра текущих чисел для файлов в архиве используют команду как это:$ tar --numeric-owner -tvf archive.tar
– David 14.01.2013, 17:23--numeric-owner
флаг. То, что более интересно, - то, что можно установить оба использования--owner=name:1234
или--group=groupname:4711
. Источник: функционируйте parse_owner_group Выполнения исходного кода – Bluehorn 02.02.2017, 20:25