Для ima-evm-integrity-check 0.5.0-alt1, создание подписей IMA/EVM выполняется в скрипте integrity-sign. Для данного скрипта установлены флаги '-eu', т.е. выполнение прерывается в случае возникновения ошибки. При создании подписи файла в функции sign_one_file(), после подписывания файла через "evmctl sign" на файл ставится флаг "immutable". Задание подписей для всех файлов системы в функции sign_files() идёт в цикле verbose "Signing files..." while read file; do sign_one_file "$file" || message "Can't sign file $file" done Соответственно, если при создании подписи какого-либо файла возникает ошибка в sign_one_file(), то выдаётся сообщение и продолжается обработка списка файлов. После завершения создания подписей ранее установленные флаги "immutable" сбрасываются в функции no_immutable_files() в цикле while read file; do chattr -i "$file" done Если при вызове chattr возникает ошибка, то выполнение функции no_immutable_files() прерывается, что оставляет в системе часть файлов с установленным ранее флагом "immutable". Файлы для подписывания ищутся в т.ч. в /var/lib/ . Как минимум для LXC/LXD в /var/lib/lxcfs/ монтируется файловая система lxcfs, которая не поддерживает ни обычные, ни расширенные атрибуты файлов. При попытке создать подписи для файлов в ней возникающие в sign_one_file() ошибки _пропускаются_, а при сбросе флагов "immutable" в no_immutable_files() ошибка в chattr вызывает _прерывание выполнения_ цикла по списку файлов - в итоге часть файлов, обработанных sign_files(), остаётся с установленными флагами "immutable". Сразу на работе системы это не сказывается, но при следующем запуске updater-start такие файлы вызывают ошибки при работе apt-get dist-upgrade, с невозможностью установки части пакетов, частичной установкой пакетов, дублированием установленных пакетов и т.п. Соответственно, имеет смысл обрабатывать в no_immutable_files() ошибки аналогично тому, как это делается в sign_files() - соответствующий патч приложен.
Created attachment 15097 [details] Patch for /usr/sbin/integrity-sign script