From 616a532b991eab88a7d4e2d028e86b57a6911305 Mon Sep 17 00:00:00 2001 From: Adam Tkac Date: Jun 18 2009 10:04:51 +0000 Subject: - 9.6.1 release - simplify chroot maintenance. Important files and directories are mounted into chroot (see /etc/sysconfig/named for more info, #504596) - fix doc/named.conf.default perms --- diff --git a/.cvsignore b/.cvsignore index 16afddb..2b1c929 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,3 +1,2 @@ config-4.tar.bz2 -bind-chroot.tar.bz2 -bind-9.6.1rc1.tar.gz +bind-9.6.1.tar.gz diff --git a/bind.spec b/bind.spec index 8be9e60..d261de7 100644 --- a/bind.spec +++ b/bind.spec @@ -3,10 +3,10 @@ # #%define PATCHVER P1 -%define PREVER rc1 +#%define PREVER rc1 #%define VERSION %{version} #%define VERSION %{version}-%{PATCHVER} -%define VERSION %{version}%{PREVER} +%define VERSION %{version} %{?!SDB: %define SDB 1} %{?!test: %define test 0} @@ -20,7 +20,7 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv Name: bind License: ISC Version: 9.6.1 -Release: 0.4.%{PREVER}%{?dist} +Release: 1%{?dist} Epoch: 32 Url: http://www.isc.org/products/BIND/ Buildroot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -31,7 +31,6 @@ Source1: named.sysconfig Source2: named.init Source3: named.logrotate Source5: rfc1912.txt -Source6: bind-chroot.tar.bz2 Source7: bind-9.3.1rc1-sdb_tools-Makefile.in Source8: dnszone.schema Source12: README.sdb_pgsql @@ -237,11 +236,6 @@ sed -i -e \ 's/RELEASEVER=\(.*\)/RELEASEVER=\1-RedHat-%{version}-%{release}/' \ version -# Substitute libtool -version-info parameter by -version-number -for all in `find . |grep Makefile.in`; do - sed -i 's/-version-info/-version-number/' $all -done - libtoolize -c -f; aclocal -I m4 --force; autoheader -f; autoconf -f %configure \ @@ -307,22 +301,24 @@ mkdir -p ${RPM_BUILD_ROOT}/var/run/named mkdir -p ${RPM_BUILD_ROOT}/var/log #chroot -mkdir -p ${RPM_BUILD_ROOT}/%{chroot_prefix} -tar --no-same-owner -jxvf %{SOURCE6} --directory ${RPM_BUILD_ROOT}/%{chroot_prefix} +mkdir -p ${RPM_BUILD_ROOT}/%{chroot_prefix}/{dev,etc,var} +mkdir -p ${RPM_BUILD_ROOT}/%{chroot_prefix}/var/{log,named,run/named,tmp} +mkdir -p ${RPM_BUILD_ROOT}/%{chroot_prefix}/etc/{pki/dnssec-keys,named} +mkdir -p ${RPM_BUILD_ROOT}/%{chroot_prefix}/var/named/{data,slaves,dynamic} # these are required to prevent them being erased during upgrade of previous # versions that included them (bug #130121): touch ${RPM_BUILD_ROOT}/%{chroot_prefix}/dev/null touch ${RPM_BUILD_ROOT}/%{chroot_prefix}/dev/random touch ${RPM_BUILD_ROOT}/%{chroot_prefix}/dev/zero touch ${RPM_BUILD_ROOT}/%{chroot_prefix}/etc/localtime + +touch ${RPM_BUILD_ROOT}/%{chroot_prefix}/etc/named.conf #end chroot make DESTDIR=${RPM_BUILD_ROOT} install -touch ${RPM_BUILD_ROOT}%{_sysconfdir}/rndc.conf install -m 755 contrib/named-bootconf/named-bootconf.sh ${RPM_BUILD_ROOT}%{_sbindir}/named-bootconf install -m 755 %SOURCE2 ${RPM_BUILD_ROOT}/etc/rc.d/init.d/named install -m 644 %SOURCE3 ${RPM_BUILD_ROOT}/etc/logrotate.d/named -touch ${RPM_BUILD_ROOT}%{_sysconfdir}/rndc.key mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig install -m 644 %{SOURCE1} ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/named %if %{SDB} @@ -346,6 +342,9 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/log/named.log # configuration files: tar -C ${RPM_BUILD_ROOT} -xjf %{SOURCE28} +touch ${RPM_BUILD_ROOT}/etc/rndc.key +touch ${RPM_BUILD_ROOT}/etc/rndc.conf +mkdir ${RPM_BUILD_ROOT}/etc/named install -m 644 %{SOURCE5} ./rfc1912.txt install -m 644 %{SOURCE21} ./Copyright @@ -354,7 +353,7 @@ install -m 644 %{SOURCE21} ./Copyright mkdir -p sample/etc sample/var/named/{data,slaves} install -m 644 %{SOURCE25} sample/etc/named.conf # Copy default configuration to %%doc to make it usable from system-config-bind -cp -fp ${RPM_BUILD_ROOT}/etc/named.conf named.conf.default +install -m 644 ${RPM_BUILD_ROOT}/etc/named.conf named.conf.default install -m 644 ${RPM_BUILD_ROOT}/etc/named.rfc1912.zones sample/etc/named.rfc1912.zones install -m 644 ${RPM_BUILD_ROOT}/var/named/{named.ca,named.localhost,named.loopback,named.empty} sample/var/named for f in my.internal.zone.db slaves/my.slave.internal.zone.db slaves/my.ddns.internal.zone.db my.external.zone.db; do @@ -458,6 +457,7 @@ rm -rf ${RPM_BUILD_ROOT} %files # Hide configuration %defattr(0640,root,named,0750) +%dir %{_sysconfdir}/named %dir %{_localstatedir}/named %config(noreplace) %verify(not link) %{_sysconfdir}/named.conf %config(noreplace) %verify(not link) %{_sysconfdir}/named.rfc1912.zones @@ -558,13 +558,16 @@ rm -rf ${RPM_BUILD_ROOT} %dir %{chroot_prefix} %dir %{chroot_prefix}/dev %dir %{chroot_prefix}/etc +%dir %{chroot_prefix}/etc/named +%dir %{chroot_prefix}/etc/pki/dnssec-keys %dir %{chroot_prefix}/var %dir %{chroot_prefix}/var/run %dir %{chroot_prefix}/var/named +%ghost %config(noreplace) %{chroot_prefix}/etc/named.conf %defattr(0660,named,named,0770) -%dir %{chroot_prefix}/var/named/slaves -%dir %{chroot_prefix}/var/named/data -%dir %{chroot_prefix}/var/named/dynamic +%ghost %dir %{chroot_prefix}/var/named/slaves +%ghost %dir %{chroot_prefix}/var/named/data +%ghost %dir %{chroot_prefix}/var/named/dynamic %dir %{chroot_prefix}/var/run/named %dir %{chroot_prefix}/var/tmp %dir %{chroot_prefix}/var/log @@ -575,6 +578,12 @@ rm -rf ${RPM_BUILD_ROOT} %ghost %{chroot_prefix}/etc/localtime %changelog +* Thu Jun 18 2009 Adam Tkac 32:9.6.1-1 +- 9.6.1 release +- simplify chroot maintenance. Important files and directories are mounted into + chroot (see /etc/sysconfig/named for more info, #504596) +- fix doc/named.conf.default perms + * Wed May 27 2009 Adam Tkac 32:9.6.1-0.4.rc1 - 9.6.1rc1 release diff --git a/named.init b/named.init index 9ceada4..517e292 100755 --- a/named.init +++ b/named.init @@ -47,6 +47,47 @@ fi [ /etc/sysconfig/dnssec -nt /etc/named.conf ] && \ /usr/sbin/dnssec-configure -b --norestart --dnssec="$DNSSEC" --dlv="$DLV" +ROOTDIR_MOUNT='/etc/named /etc/pki/dnssec-keys /var/named /etc/named.conf +/etc/named.dnssec.keys /etc/named.rfc1912.zones /etc/rndc.conf /etc/rndc.key' + +mount_chroot_conf() +{ + if [ -n "$ROOTDIR" ]; then + for all in $ROOTDIR_MOUNT; do + # Skip nonexistant files + [ -e "$all" ] || continue + + # If mount source is a file + if ! [ -d "$all" ]; then + # mount it only if it is not present in chroot or it is empty + if ! [ -e "$ROOTDIR$all" ] || + [ `ls -s "$ROOTDIR$all" | awk '{ print $1 };'` -eq 0 ]; then + touch "$ROOTDIR$all" + mount --bind "$all" "$ROOTDIR$all" + fi + else + # Mount source is a directory. Mount it only if directory in chroot is + # empty. + [ `ls -1A $ROOTDIR$all | wc -l` -eq 0 ] && \ + mount --bind "$all" "$ROOTDIR$all" + fi + done + fi +} + +umount_chroot_conf() +{ + for all in $ROOTDIR_MOUNT; do + # Check if file is mount target. Do not use /proc/mounts because detecting + # of modified mounted files can fail. + if mount | grep -q '.* on '"$ROOTDIR$all"' .*'; then + umount "$ROOTDIR$all" + # Remove temporary created files + [ -f "$all" ] && rm -f "$ROOTDIR$all" + fi + done +} + # Check if all what named needs running start() { @@ -70,6 +111,8 @@ start() named_conf=${named_conf:-/etc/named.conf}; + mount_chroot_conf + if [ ! -r $ROOTDIR$named_conf ]; then echo 'Cannot find configuration file. You could create it by system-config-bind' exit 6; @@ -117,12 +160,14 @@ start() failure echo [ -x /usr/bin/logger ] && echo "$named_err" | /usr/bin/logger -pdaemon.error -tnamed; + umount_chroot_conf exit 2; fi; echo if [ $RETVAL -eq 0 ]; then touch /var/lock/subsys/named; else + umount_chroot_conf exit 7; fi return 0; @@ -148,6 +193,8 @@ stop() { fi; done + umount_chroot_conf + # remove pid files if [ $RETVAL -eq 0 ]; then rm -f /var/lock/subsys/named diff --git a/named.sysconfig b/named.sysconfig index 421dfa1..6ae9539 100644 --- a/named.sysconfig +++ b/named.sysconfig @@ -6,6 +6,22 @@ # you must set up the chroot environment # (install the bind-chroot package) before # doing this. +# NOTE: +# Those directories are automatically mounted to chroot if they are +# empty in the ROOTDIR directory. It will simplify maintenance of your +# chroot environment. +# - /var/named +# - /etc/pki/dnssec-keys +# - /etc/named +# +# Those files are mounted as well if target file doesn't exist in +# chroot. +# - /etc/named.conf +# - /etc/rndc.conf +# - /etc/rndc.key +# - /etc/named.rfc1912.zones +# - /etc/named.dnssec.keys +# # # OPTIONS="whatever" -- These additional options will be passed to named # at startup. Don't add -t here, use ROOTDIR instead. diff --git a/sources b/sources index be782aa..22cc3f9 100644 --- a/sources +++ b/sources @@ -1,3 +1,2 @@ de68e10e91e05ab100be879b5bcaa6cb config-4.tar.bz2 -4faa4395b955e5f8a3d50f308b9fabc8 bind-chroot.tar.bz2 -43121369fa9c218d565ae685960660e2 bind-9.6.1rc1.tar.gz +516ac74d8eaaef30ad4c99ada8b715cd bind-9.6.1.tar.gz