строку
'CDEBUG= -O2 -g'
заменим на
'CDEBUG= -O2 -static'
Перейдем в корневой каталог дерева исходных текстов bind и произведем компиляцию и сборку: make clean && make. Требование статически собранных исполняемых файлов named и named-xfer не является обязательным, однако, может упростить нашу задачу. Более того, Craig H. Rowland рекомендует все сетевые демоны собирать статическими.
/dev
/etc
/namedb
/usr
/libexec
/var
/run
/stat
Для каждого директория проделаем необходимые действия:
/
сюда скопируем из дерева исходных текстов
bind src/bin/named статически слинкованный исполняемый файл
named
/etc
скопируем named.conf из /etc
скопируем localtime из /etc
для корректного отображение Вашей таймзоны в сообщениях syslog
скопируем файлы passwd и
group из /etc и удалим из них записи о реальных
пользователях
/etc/namedb
сюда поместим все файлы зон из
/etc/namedb. Если Ваш nameserver является slave, то Вам
необходимо сделать данный каталог доступным для записи для uid bind:
chown bind.bind etc/namedb.
Другое решение - создать специальный каталог для хранения файлов зон,
для которых Ваш nameserver является slave:
mkdir etc/namedb/slave; chown bind.bind etc/namedb/slave
/dev
mknod dev/null c 2 2; chmod 666 dev/null
/usr/libexec
скопируем из дерева исходных текстов
bind src/bin/named-xfer статически слинкованный исполняемый
файл named-xfer
/var
chown bind.bind var/run var/stat
options { ... dump-file "/var/stat/named.dump"; memstatistics-file "/var/stat/named.mem"; pid-file "/var/run/named.pid"; statistics-file "/var/stat/named.stat"; ... };
И в секцию controls:
controls { unix "/var/run/ndc" perm 0600 owner 0 group 0; };
Здесь мы определяем служебный канал FIFO, через который name daemon control programm ndc будет взаимодействовать с named. Дело в том, что, согласно man 8 ndc, метод управления named через отправку ему сигналов признан устаревшим и будет полностью удален в следующий версиях bind. Мы имеем возможность назначить владельца и права для управляющего канала, что дает возможность делегировать управление named непривилегированным пользователям. Обратите внимание на ведущий ноль в permissions и на числовые id.
Последней директивой мы определяем местоположение дополнительного сокета, который должен прослушивать syslogd и в который будет писать syslog-информацию named.
После этих модификаций необходимо перезапустить syslogd:
# kill `cat /var/run/syslogd.pid`; /usr/sbin/syslogd -l /chroot/named/dev/log
Запускаем named:
# /chroot/named/named -u bind -g bind -t /chroot/named -b /etc/named.conf
и проверяем:
# /usr/sbin/ndc -c /chroot/named/var/run/ndc getpid