LINUX.ORG.RU
ФорумAdmin

Как красиво рассчитать контрольные суммы файлов пакета в Debian?

 , ,


0

2

Имеется Astra Linux и пакет kesl. В его состав, полученный через dpkg, входят и директории. Как красиво однострочником рассчитать контрольные суммы файлов пакета, исключая из вывода директории?

Сначала я сделал такое:

for file in $(dpkg -L kesl); do if [[ $(file -b $file) != "directory"]]; then gostsum $file; fi; done

Но оказалось, что у file для некоторых директорий дает выхлоп setgid, directory

Потом я сделал такое

for file in $(dpkg -L kesl); do if [[ ! $(file -b $file | grep -o directory) ]]; then gostsum $file; fi; done

И в конце концов пришел к такому

for file in $(dpkg -L kesl); do if [[ $(file -b $file | grep -L directory) ]]; then gostsum $file; fi; done

Знатоки bash, возможно ли обойтись вообще без пайпа в условии чтобы все корректно отработало?

Перемещено hobbit из general


Получить с помощью «dpkg-deb» содержимое deb-пакета, и потом через пайпы отгрепать каталоги, дальше xargs с подсчетом контрольной суммы. Может быть после грепа понадобится еще awk выделить путь.

А вообще - это вопрос для саппорта астры, пусть отрабатывают свои деньги.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от vvn_black

Помоему предложенный способ сложнее чем мой) мой то работает, я просто ищу способы уменьшить его и сделать эстетически красивее

NordeN
() автор топика
Ответ на: комментарий от NordeN

Дело вкуса конечно, мне как-то так проще, например:

dpkg-deb -c /path/to/package.deb | grep -v '/$' | awk '{print $6}' | sed 's/^.//' | xargs md5sum
vvn_black ★★★★★
()

Натравить на выхлоп dpkg утилиту find с ключом -type f

shell-script ★★★★★
()
while read f; do [[ -f "$f" ]] && gostsum "$f"; done < <(dpkg -L kesl)
No
()

расчитать контрольтные суммы

а зачем это надо?

amd_amd ★★★★★
()
Ответ на: комментарий от Siborgium

Вопрос выбора между простое лучше, чем сложное и cложное лучше, чем запутанное. Спросонья получается следовать первому. )

vvn_black ★★★★★
()

Один мой знакомый любит задавать вопрос: «А почему вы спрашиваете?» Особенно если подозревает, что вопрошаюший делает что-то не то. Имхо, сейчас этот вопрос к месту. (Похоже, что amd_amd того же мнения.) Зачем вычислять контрольные суммы файлов пакета? Я с deb дела не имел, а вот в rpm есть пара опций на эту тему. Первая:

$ rpm -q --dump mc
/etc/mc 0 1693180800 0000000000000000000000000000000000000000000000000000000000000000 040755 root root 0 0 0 X
/etc/mc/edit.indent.rc 791 1691952745 2a845306c88c6604ddaeec1e019c5617d41bef3b7e72afb791b34b43df8c63df 0100755 root root 0 0 0 X
/etc/mc/filehighlight.ini 1420 1691952745 a7ee0d0172922c75797ff07c0f5f7f94087e8182ad9f3306e14f6d8e96e8fc00 0100644 root root 1 0 0 X
...

Четвёртое слово в каждой строке вывода — это контрольная сумма. Это если хочется её просто посмотреть. Если же хочется убедиться, что файл после установки не был изменён, то в помощь вторая:

$ rpm -V mc
....L....  c /etc/mc/mc.keymap

Вот, я исправил mc.keymap, все остальные файлы в норме.

Неужели в deb нет ничего подобного?

debugger ★★★★★
()
Ответ на: комментарий от debugger

Я ведь не КС файлов пакета смотрю) я из пакета смотрю перечень файлов, которые пакет создает в файловой системе ОС. А затем по этим путям рассчитываю КС, чтобы сравнить их с КС, указанными в бумажном формуляре на сертифицированное средство защиты

NordeN
() автор топика
Ответ на: комментарий от NordeN

Ну так и я про то же. В случае rpm мои действия были бы такими:

  1. Распечатать контрольные суммы файлов в пакете: rpm -q --dup ‹пакет›.
  2. Сравнить их с теми, которые распечатаны на бумаге.
  3. Убедиться что контрольные суммы реальных файлов равны тем, которые должны быть: rpm -V ‹пакет›.

Самостоятельное вычисление контрольных сумм не требуется. Покури ман на deb, я думаю, что там должно быть что-то подобное.

P. S.

Первое же гугление выдаёт команду debsums:

debsums - check the MD5 sums of installed Debian packages

Имхо, это именно то, что тебе нужно.

P. P. S.

Если ты серьёзно озабочен этим вопросом, то контрольные суммы надо подсчитывать не на живой системе. Я бы снял диск, подключил его к доверенной системе и уже на ней выполнял проверки, т. к. скомпрометированная система может показывать тебе те контрольные суммы, которые должны быть, а не те, которые есть на самом деле.

debugger ★★★★★
()

ты чего-то недоговариваешь ;) (тогда я тоже не буду ;) )

Имеется Astra Linux

точно, не разглядел )

gostsum_from_deb - подсчет контрольных сумм по стандартам ГОСТ Р 34.11-94 (хеш функция) и ГОСТ Р 34.11-2012 для файлов из *.deb пакетов

 dpkg -S gostsum_from_deb
gostsum: /usr/share/man/man1/gostsum_from_deb.1.gz
gostsum: /usr/bin/gostsum_from_deb
gostsum: /usr/share/man/ru/man1/gostsum_from_deb.1.gz
gostsum: /usr/share/locale/ru/LC_MESSAGES/gostsum_from_deb.mo

всё нужное тебе уже в составе дистрибутива

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от debugger

Первое же гугление выдаёт команду debsums

Лет десять назад у меня возникла сходная задача применительно к Дебиану. И выяснилось,что во многих(на тот момент) пакетах контрольных сумм небыло. Как с этим сейчас в Дебиане и тем более в Астре - не знаю,смотреть надо. И если в Астре будет такой же бардак то это действительно как выше сказали повод напрячь разработчиков чтобы деньги отрабатывали.

Кстати,в Дебиане есть еще полезная программка cruft - ищет в файловой системе файлы,о которых не знает пакетный менеджер. Понятно что пользовательские каталоги надо указать с ключом –ignore. А вот на что-то лишнее,валяющееся в системных каталогах - укажет сразу.

Также для диагностики «здоровья» системы могут быть полезны программки debfoster и deborphan. Требуется вдумчивое чтение манов перед использованием для понимания что же именно они показывают и как это интерпретировать.

Особенно полезно всё это применять перед какими-нибудь масштабными апгрейдами чтобы убедиться в корректности представления пакетного менеджера о содержимом системного диска.

watchcat382
()

Как вариант: sed 's/.* /\//g' /var/lib/dpkg/info/bash.md5sums | xargs gostsum.

undef ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.