dadv: (Default)
[personal profile] dadv

Не все знают, что при переходе из single user mode в multiuser mode ядро FreeBSD посылает всем процессам сигнал HUP (номер 1). Дефлотный обработчик этого сигнала завершает выполнение процесса - таким образом, при переходе в multiuser умирают все фоновые процессы, за исключением запущенных процедурой начальной загрузки сервисов, корректно отвязавшихся от управляющего терминала и/или обрабатывающих сигнал самостоятельно.

С разработанным под Linux софтом, где такого нет, из-за этого иногда возникают проблемы. Ещё под FreeBSD 4.11 в своё время разворачивал линуксовую версию IPSoft Billing, имевшую в своём составе СУБД SyBase Anywhere, которая успешно стартовала, но в момент перехода в multiuser, получив SIGHUP, корректно завершалась. Тогда мне помогла утилита daemon(8), вставленная в стартовый скрипт, которая запускала СУБД, предварительно демонизировавшись и включив игнорирование SIGHUP. После чего та система проработала долго и счастливо много лет.

Но это всё присказка была.

Несколько версий назад stunnel научился перечитывать файл конфигурации по сигналу HUP, до этого перечитывать конфигурацию он не умел и после изменения его приходилось рестартовать. Что происходит с stunnel, если в его конфигурации одновременно включены chroot и использование клиентских сертификатов?

Во время первоначального запуска stunnel демонизируется, читает конфигурационный файл, [s]pwd.db для трансляции имени stunnel в uid, читает сертификаты с ключами, открывает прослушивание указанных портов, открывает нужные ему файлы в /dev, подключается к syslog, если сказано, устанавливает обработчики сигналов - в общем, выполняет множество действий. Потом делает chroot и ждет подключений. Во время загрузки FreeBSD всё это происходит в single user mode. В момент окончания загрузки системы stunnel получает SIGHUP от ядра и пытается заново прочитать конфигурацию, сертификаты, [s]pwd.db и прочее. В конфигурации по умолчанию ничего этого изнутри chroot ему сделать уже нельзя и в итоге он перестаёт слушать порты и обслуживать пользователей, так и не начав. Так простое обновление старой версии порта может дать изумительный эффект (ещё один пример этой же проблемы).

Если конфигурацию и сертификаты путем тщательной обработки системы напильником ему можно предоставить в chroot (создав структуры в /var/stunnel и симлинки туда по образу и подобию /var/named), то генерировать там полное системное окружение, включая актуальные [s]pwd.db я посчитал излишним. Вместо этого запатчил stunnel, вернув игнорирование SIGHUP, если в конфигурации включено использование chroot (файл по ссылке положить в /usr/ports/security/stunnel/files/ и пересобрать порт).

Date: 2012-03-13 16:23 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
а не проще его стартовать уже в multiuser?

Date: 2012-03-13 16:25 (UTC)
From: [identity profile] dadv.livejournal.com
Он потом от малейшего чиха (попытки service reload не подозревающим подвоха оператором) сдохнет.

Date: 2012-03-13 16:27 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
и релоад отрезать для такого конфига, благо в скрипте это возможно.

Date: 2012-03-13 16:29 (UTC)
From: [identity profile] dadv.livejournal.com
Собственно, пост и патч именно про отрезание reload.

Date: 2012-03-13 16:33 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
нет, у сервиса. что бы комманды такой у него не было.

Date: 2012-03-13 16:36 (UTC)
From: [identity profile] dadv.livejournal.com
Плохая защита от дурака умника, умеющего killall -1 stunnel.

Date: 2012-03-13 16:32 (UTC)
From: [identity profile] 3jia5l-ca6aka.livejournal.com
Я вот каждый раз игнорирую надпись "только для тех, кого коснулась длань будды" и силюсь понять ачоваще, но в итоге понимаю примерно половину.

Date: 2012-03-13 16:35 (UTC)
From: [identity profile] dadv.livejournal.com
Няня, я у них поел (http://s.lurkmore.to/images/e/ea/Wc1k5h.gif)?

Date: 2012-03-13 16:41 (UTC)
From: [identity profile] 3jia5l-ca6aka.livejournal.com
)) не совсем

Date: 2012-03-13 17:13 (UTC)
From: [identity profile] freetiger.livejournal.com
самба может себя так же вести? а то у меня тут смутные подозрения...

Date: 2012-03-13 17:14 (UTC)
From: [identity profile] dadv.livejournal.com
Все могут себя так же вести.

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios