На (64-разрядном) Debian, как я устанавливаю glibc, который я создал из источника?

Если ваша стандартная политика iptables в FORWARD-цепочки составляет DROP, вы можете удалить первую строку. Дополнительно (для большей безопасности) вы можете добавить входящий и исходящий интерфейсы smtp-трафика в строки 3 и 4.

iptables -I FORWARD -o <OUTGOING IF> -i <INGOING IF> -p tcp -s <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I FORWARD -o <OUTGOING IF> -i <INGOING IF> -p tcp -d <SMTP IP HERE> --dport 25 -j ACCEPT

Просто добавьте правильные имена интерфейсов брандмауэра. Причина этого довольно проста: IP-адреса могут быть легко подделаны, но, конечно, Вы не можете так легко подделать физический интерфейс, на который приходит или уходит трафик. Кроме того, правила мне кажутся вполне нормальными. Просто попробуйте, работает ли оно так, как вы задумывали, и посмотрите, есть ли какое-нибудь неожиданное поведение.

Greatings, Darth Ravage

.
1
15.06.2014, 18:39
1 ответ

В поисках чего-то несвязанного я случайно обнаружил, почему моя установка выбирает старую libc: потому что новая libc имела более старую версию ABI ( https://stackoverflow.com/ questions / 20577638 / library-path-order-for-alternate-glibc-dynamic-linker-ld-so ).

Вот что я сделал:

  1. Я сделал резервную копию содержимого / lib , / lib32 и / lib64 .

  2. Я отредактировал /etc/ld.so.conf.d/x86_64-linux-gnu.conf , чтобы поместить / lib64 в начало путей поиска.

  3. Я настроил новую версию glibc (2.19) с параметрами - prefix = / usr --enable-kernel = 2.6.26 , чтобы соответствовать старой версии glibc (2.13).

  4. Я построил новую glibc. Это было без происшествий.

  5. Я использовал su , чтобы получить привилегии root, и выполнил make install . Он начал установку, затем произошел сбой после установки нового ld-linux-x86-64.so.2 , который все еще загружал старую libc.so.6 .

  6. Чтобы исправить это, я запустил ldconfig (конечно, все еще как root).

  7. Я перезапустил установку ( make install ). Снова произошла ошибка при выполнении какой-то команды, которая вызвала gcc . Я обнаружил, что это из-за несовпадения заголовков: новый /usr/include/stdio.h подхватывает старый /usr/include/x86_64-linux-gnu/sys/cdefs.h , а не новую версию по адресу /usr/include/sys/cdefs.h .

  8. Итак, чтобы исправить это, я удалил каталог / usr / include / x86_64-linux-gnu / sys и заменил его символической ссылкой на / usr / include / sys . Я также заменил заголовки a.out.h , fpu_control.h и ieee754.h в / usr / include / x86_64-linux- gnu с символическими ссылками на их новые версии в / usr / include .

  9. Я снова перезапустил установку ( make install ). Наконец-то это удалось.

После перезагрузки системы все было в идеальном рабочем состоянии.

Я еще не выяснил, что произойдет, если я попытаюсь также обновить 32-битную версию libc, установленную вместе с 64-битной версией в моей системе. Я подозреваю, что это снова все ужасно сломает. Обновлю этот ответ, если мне это удастся.

2
27.01.2020, 23:38

Теги

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