DHCPD падает по sigsegv при определении хотя бы одного failover-сервера в dhcpd.conf. Происходит после накладывания патча dhcp-3.0.1rc14-owl-alt-drop_priv.patch. В этом патче в файле dhcpd.c функции main() переносится часть кода, инициализирующая базу адресов, ниже по тексту для инициализации базы после перехода в chroot и сброса привилегий. при этом вызов функции postdb_startup() оставлен на старом месте, что приводит к ее вызову до инициализации базы адресов. Он и вызывает падение dhcpd. если функцию перенести ниже и вызвать после перехода в chroot и инициализации базы, то dhcpd стартует и работает. Steps to Reproduce: 1. Добавьте описание failover peer в dhcpd.conf 2. Запустите dhcpd 3. segfault... Actual Results: dhcpd прекращает работу Expected Results: нормальная работа dhcpd
Created attachment 1215 [details] патч на dhcp-3.0.1rc14-owl-alt-drop_priv.patch
Reassigned to maintainer.
Created attachment 1216 [details] dhcp-3.0.3-owl-alt-drop_priv.patch Похоже, postdb_startup() надо расщепить. Попробуйте этот патч.
Нет, dhcp_failover_startup() после вызова drop_priv() нормально работать не сможет, поскольку для того, чтобы использовать привилегированные порты, требуются права, которых после drop_priv() уже нет. Боюсь, что придётся сбрасывать права по частям. Другие идеи есть?
> Другие идеи есть? Использовать непривилегированные порты? Насколько я понял из man dhcpd.conf, порты за failover-протоколом не закреплены и выбираются произвольно. Так что вариант с портами > 1024 может оказаться вполне рабочим.
Уже закреплено, см. https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167292 Т.е. в качестве временного workaround'а можно использовать непривилегированные порты, но в пакете должно быть решение и для ставших стандартными привилегированных портов.
Created attachment 1217 [details] dhcp-3.0.3-alt1.nosrc.rpm Понижение прав в два этапа. В таком виде должен работать и failover.
> Понижение прав в два этапа. В таком виде должен работать и failover. Попробую, спасибо. Кстати, в мастере 2.4 ситуация аналогичная. Ее б тоже поправить...
Должно быть исправлено в dhcp-3.0.3-alt1. Но вы всё-таки проверьте.