* Пт дек 10 2021 Gleb F-Malinovskiy <glebfm@altlinux.org> 2.13-alt1 - Updated to 2.13.
Это баг в cpio-2.13: relative symlink handling with --no-absolute-filenames https://lists.gnu.org/archive/html/bug-cpio/2019-11/msg00016.html Корректный архив: $ cpio -i -t -v -F 2.cpio drwxrwxr-x 2 lav users 0 Mar 20 23:10 1 lrwxrwxrwx 1 lav users 13 Mar 20 23:10 1/bash -> /usr/bin/bash Распаковка: $ cpio --extract --make-directories --no-absolute-filenames < 2.cpio cpio: Removing leading `/' from hard link targets 1 block Битый симлинк в итоге: $ ls -l 1/ итого 0 lrwxrwxrwx 1 lav users 12 мар 20 23:24 bash -> usr/bin/bash Причём проблема только при указании --no-absolute-filenames, то есть она не применяется по умолчанию, несмотря на комментарий https://bugzilla.altlinux.org/show_bug.cgi?id=9226#c2 Аналогичная бага в Gentoo: https://bugs.gentoo.org/700020
Спустя 2 года в Gentoo багу закрыли: https://bugs.gentoo.org/700020#c15 Очень ждём исправления и в Сизифе (в p10 пока что 2.12, возможно, с CVE, но без этой баги).
Есть новая версия cpio 2.14 История изменения: https://savannah.gnu.org/news/?id=10359 Нас интересует пункт: * Rewrite the fix for CVE-2015-1197 Но для обновления cpio необходимо обновить autoconf до версии 2.71+ https://bugzilla.altlinux.org/42349
(Ответ для Mikhail Tergoev на комментарий #3) > Есть новая версия cpio 2.14 > История изменения: > https://savannah.gnu.org/news/?id=10359 > Нас интересует пункт: > * Rewrite the fix for CVE-2015-1197 > > Но для обновления cpio необходимо обновить autoconf до версии 2.71+ > https://bugzilla.altlinux.org/42349 Ещё есть вариант добавить только исправляющий патч в нынешнюю 2.13.
(In reply to Mikhail Tergoev from comment #3) > Но для обновления cpio необходимо обновить autoconf до версии 2.71+ > https://bugzilla.altlinux.org/42349 Прямо-таки необходимо? Можете обосновать это утверждение?
В 2024 году уже есть новая версия 2.15.
Создаю тестовый архив и тестовый симлинк: mkdir testcpio && cd testcpio mkdir 1 ln -s /usr/bin/bash 1/bash find $HOME/testcpio/ -depth | cpio -o > test.cpio Проверяю архив: $ cpio -i -t -v -F test.cpio -rw-r--r-- 1 vano vano 0 Apr 2 21:15 /home/vano/testcpio/1/test.cpio lrwxrwxrwx 1 vano vano 13 Apr 2 21:14 /home/vano/testcpio/1/bash -> /usr/bin/bash drwxr-xr-x 2 vano vano 0 Apr 2 21:15 /home/vano/testcpio/1 drwxr-xr-x 3 vano vano 0 Apr 2 21:12 /home/vano/testcpio/ Распаковка: $ cpio --extract --make-directories --no-absolute-filenames < test.cpio cpio: Из имён членов удаляются начальные `/' 1 блок Проверяю распакованый симлинк: $ ls -l ~/testcpio/home/vano/testcpio/1/ итого 0 lrwxrwxrwx 1 vano vano 13 апр 2 21:17 bash -> /usr/bin/bash С ним всё нормально. Проверял на версии cpio 2.15
(Ответ для Ivan Mazhukin на комментарий #7) ... > Проверял на версии cpio 2.15 Да, как раз там исправлено: GNU cpio version 2.15 is available for download. This is a bug-fixing release. Short summary of changes: Fix the operation of --no-absolute-filenames --make-directories. Restore access and modification times of symlinks in copy-in and copy-pass modes