TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #137 8.47K
Доброе утро господа и дамы… на картинки пока НЕ смотрим, все станет прозрачным чуть позже.

Создаем подопытный файл под рутом:

echo 'some text' > test.txt

Затариваем его:

tar -cf test.tar test.txt

Теперь открываем в hexdump:

hexdump -C test.tar

hexdump — инструмент который используется разработчиками и отладчиками приложений. Он может преобразовывать файлы и данные в приятный и читаемый формат.

Так, открыли. Смотри первую картинку к этому посту. Видишь root/root? Это имя владельца и имя группы файла. Так вот, при создании архива эти поля можно изменять.

Давай изменим:

tar --owner='bash' --group='days' -cf test.tar test.txt

Окей. Снова открываем в hexdump:

hexdump -C test.tar

Смотрим вторую картинку. На ней видим интересную ситуацию, пользователь изменился на bash, а группа на days. НО в системе у нас нет такого пользователя и группы. Хотя ожидаемый результат должен быть — user/group not found или что-то подобное.

-rw-r--r-- bash/days 10 2023-10-23 05:09 test.txt

Баг или фича? Причем если растарить такой файл (с ключом -p или без него), bash/days вернутся к root/root.

А теперь создадим с user/user (этот пользователь и группа есть в системе).

tar --owner='user' --group='user' -cf test.tar test.txt

Распаковываем:

tar -xf test.tar

И видим ситуацию, что у файла test.txt пользователь и группа user/user. Великолепно! Вот такое интересное поведение.

Из документации по тару по смещениям 108 и 116 находятся uid и gid.

char uid[8]; /* 108 */
char gid[8]; /* 116 */

Давай посмотрим смещение 108:

hexdump -Cs108 -n8 test.tar

получаем:

0000006c 30 30 30 31 37 35 30 00 |0001750.|00000074

Конвертим 0001750 в uid:

echo $(( 8#1750 ))

Опа, получили 1000, что соответствует пользователю user. А если этот трюк провернуть с bash/days то получим uid того пользователя, под которым тарили файл.

Короче как всегда везде есть свои нюансы и приколы, возможно обоснованные. Глубже копать не стал. Давай, увидимся вечерком!

tags: #linux #debug
—
💩 @bashdays
  • 👍 116
More from @bashdays
  1. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  2. Sep 24, 2026Post #1565
  3. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  4. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  5. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →