Анонимные тарболлы

11

Tar кодирует мое имя пользователя в tarball. Могу ли я заставить его сделать полностью анонимный тарбол?

--owner rootзаменяет только некоторые экземпляры моего имени пользователя. Добавление USER=root: не USER=root tar c --owner root dataимеет никакого эффекта.

Короче, желаю:

echo hello world > data; tar c --owner root data | grep "$USER"

чтобы не совпадать.

PSkocik
источник

Ответы:

14

Чего мне не хватало было --group=rootв дополнение к --owner=root.

tar -c --{owner,group}=root

(возможно с дополнительным --numeric-owner) полностью анонимизирует архив.

PSkocik
источник
6
Расширение Bash Brace {a,b}может быть довольно запутанным. --{owner,group}=root будет расширен до--owner=root --group=root
Sanya_Zol
9

Вы можете использовать --numeric-owner, это просто поместит ваш UID (1000 или что-то подобное в большинстве систем) в файл. От man tar:

 --numeric-owner
       always use numbers for user/group names
Энтон
источник
Спасибо. Это делает работу, хотя только частично. Похоже, что cpio (который, кажется, всегда кодирует uids в цифровом виде) может полностью анонимизировать свои архивы через --ownerпереключатель.
PSkocik
1
IIRC - владелец работает только при извлечении / передаче. Если я не прав, вы можете использовать -Hопцию cpio для прямой записи файлов tar.
Anthon
Похоже, работает на -oтоже. Я попытался создать простой архив с и без, --owner root:rootа затем расшифровал их соответствующие hexdumps. Что изменилось, так это две двухбайтовые последовательности, которые с прямым порядком байтов декодировали в 0 и my $UIDсоответственно.
PSkocik
1
@PSkocik Что интересно, я только что проверил man cpioи cpio --helpи оба они подтверждают то , что я заметил раньше. Вероятно, источник был обновлен, но документация не была (GNU cpio 2.11)
Anthon