файл: скомпилированная версия magic [534] не совпадает с версией magic общей библиотеки

Как вы знаете, /dev/memобеспечивает доступ к физической памяти работающей системы. /dev/kmemобеспечивает доступ к виртуальной памяти ядра. Оба этих символьных устройства могут быть постоянно отключены с помощью параметров конфигурации ядра (. Код является наиболее авторитетным источником информации, поэтому он используется для справки ). Отключение первых двух опций ниже приведет к отключению соответствующих устройств.

  • CONFIG_DEVKMEM:определяет, создается ли /dev/kmemпри загрузке
  • CONFIG_DEVMEM:определяет, создается ли /dev/memпри загрузке
  • CONFIG_STRICT_DEVMEM:если /dev/memсуществует, определяет, ограничен ли доступ к нему

В зависимости от вашего дистрибутива текущую конфигурацию ядра можно увидеть с помощью чего-то вроде zless /proc/config.gzили less /boot/config-$(uname -r).

Я думаю, что первоначальной целью /dev/memбыла поддержка взаимодействия с памятью, -отображенными периферийными устройствами. Очевидные негативные последствия доступности этих виртуальных устройств для безопасности (, например. возможность злоумышленника «на лету» исправить память другого процесса или даже ядра )известна уже как минимум десятилетие. Ограничение доступа к /dev/memподдерживается в основном ядре с начала 2008 года , /dev/kmemтакже является необязательным с тех пор .

Десять лет назад казалось, что Xзависел от /dev/mem, я не думаю, что это все еще верно. Чтобы проверить заявления о том, что Xнуждается в /dev/mem, вчера я удалил виртуальное устройство со своего ноутбука, и с тех пор оно работает, казалось бы, идеально. В 2017 году кажется, что эти устройства не имеют практического применения , кроме исследований и разработок.

С точки зрения безопасности рекомендуется удалить эти устройства. Еще стоит отметить, что удаленный злоумышленник с повышенными привилегиями,может читать память за пределами своего адресного пространства. Доступ к памяти других приложений пользовательского пространства можно получить с помощью /proc//mem. Доступ к памяти ядра можно получить с помощью /proc/kcore.

1
03.08.2018, 13:22
2 ответа

Мне также пришлось очистить сам скомпилированный файл magic, чтобы libmagic правильно обновлялся при компиляции вручную. В настоящее время в репозиториях Canonical доступна только версия с ошибками (5.32 ), так что это ваш единственный маршрут на данный момент. Убедитесь, что вы выполнили очистку /both/libmagic1 и libmagic -mgc перед компиляцией/установкой файла. Тогда libmagic должен обновиться соответствующим образом.

0
28.01.2020, 00:31

При сборке fileс нуля общие библиотеки устанавливаются в /usr/lib/. Linux на основе Debian, и я считаю, что CentOS попадает в эту категорию, установите общие библиотеки fileв /usr/lib/x86_64-linux-gnu/или что-то еще *-linux-gnu, подходящее для вашей архитектуры. Вам нужно либо установить соответствующие параметры конфигурации(--libdir=/usr/lib/x86_64-linux-gnu--я думаю )для перезаписи, либо перезаписать вручную, либо вручную удалить старые файлы.

0
28.01.2020, 00:31

Теги

Похожие вопросы