Как скрыть предупреждения, возникающие из-за устаревшего хранения ключей при выполнении apt-get update?

Вопрос или проблема

Это продолжение темы подавления предупреждений apt-key.

Когда у меня установлены устаревшие и deprecated ключи, я вижу предупреждения, когда я устанавливаю что-либо с помощью apt-get или просто обновляюсь через:

apt-get update -qq > /dev/null

Я вижу предупреждения о legacy ключах:


W: http://packages.icinga.com/ubuntu/dists/icinga-jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: http://deb.goaccess.io/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

Я осведомлен о проблемах безопасности. Для моего случая, я просто не хочу засорять консоль. Я хочу скрыть эти предупреждения, но ошибки все же должны отображаться.

Как я могу этого добиться? (Я не хочу перемещать ключи или импортировать их “правильным” способом.)


APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE не применяется, когда выполняется apt-get update, как я пробовал

APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-get update -qq > /dev/null`

но предупреждения все равно отображаются.

Я решил переместить ключи в папку /etc/apt/trusted.gpg.d/; так как я использую команду в init скрипте bash, я проверяю их наличие, и только если файл существует, перемещаю его:

[ ! -f /etc/apt/trusted.gpg ] || mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/

Теперь предупреждения не будут отображаться:

apt-get update -qq > /dev/null

Конечно, риски безопасности все же присутствуют.

Ответ или решение

Теория

Когда вы выполняете команду apt-get update, утилита APT обновляет список доступных пакетов и версий, которые могут быть установлены из репозиториев. В некоторых сценариях это может вызвать предупреждения о том, что ключи хранятся в устаревшей связке ключей /etc/apt/trusted.gpg. Эти предупреждения указывают на то, что ключи шифрования используются для аутентификации репозиториев, но они находятся в месте, которое считается устаревшим.

Такие предупреждения обычно сопровождаются рекомендацией переместить ключи в более современное местоположение – обычно это каталог /etc/apt/trusted.gpg.d/. Это связано с улучшением безопасности и более управляемым подходом к хранению и управлению ключами.

Пример

Предположим, у вас есть сценарии, в которых при выполнении apt-get update, выводятся следующие предупреждения:

W: http://packages.icinga.com/ubuntu/dists/icinga-jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

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

Применение

Первоначально, ваш подход состоял в попытке использовать переменную среды APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE, которая, к сожалению, не применима в случае apt-get update. Есть несколько других способов скрыть эти предупреждения:

  1. Использование фильтрации вывода
    Чтобы скрыть предупреждения и оставить только ошибки, вы можете подвергнуть вывод команды фильтрации. Один из способов сделать это — использовать команды Linux для фильтрации стандартного вывода и ошибок. Например:

    apt-get update 2>&1 | grep -v "Key is stored in legacy trusted.gpg keyring"

    Эта команда перенаправит как стандартный вывод (stdout), так и стандартные ошибки (stderr) на вход команды grep, и с помощью -v исключит строки с упоминанием устаревшей связки ключей.

  2. Создание пользовательского скрипта Bash
    Вы можете создать Bash-скрипт, который выполняет apt-get update, затем анализирует и фильтрует вывод по вашему усмотрению.

    #!/bin/bash
    OUTPUT=$(apt-get update 2>&1)
    echo "$OUTPUT" | grep -v "Key is stored in legacy trusted.gpg keyring"
  3. Переоперационное окружение
    В некоторых случаях вы можете полностью подавить предупреждения, перенаправляя их в /dev/null:

    apt-get update 2> /dev/null

    Тем не менее, использование этого подхода может скрыть и другие важные сообщения об ошибках.

  4. Логирование в файл
    Если вы предпочитаете анализировать логи позже, вы можете направить вывод в файл и использовать инструмент обработки текста для анализа в удобное время:

    apt-get update > update.log 2>&1
    grep -v "Key is stored in legacy trusted.gpg keyring" update.log > filtered_update.log

Заключение

Таким образом, хотя предупреждения о хранении ключей в устаревшей папке можно игнорировать в определённых случаях, рекомендуется в долгосрочной перспективе стремиться использовать более устойчивые и поддерживаемые методы управления ключами, такие как перемещение их в /etc/apt/trusted.gpg.d/. Это может улучшить как безопасность, так и управляемость репозиториев. Однако если вам необходимо скрыть предупреждения на начальном этапе, описанные выше методы помогут вам достичь этого.

Оцените материал
Добавить комментарий

Капча загружается...