Bind v chrootu nenabiha (SuSE 9.3)
Filip Flajšar
linux na ssos.cz
Čtvrtek Červenec 21 22:54:58 CEST 2005
Tady je script ALL z rpm FC4 (balicek bind-chroot)
Kdyztak mrknete na
ftp.fi.muni.cz/pub/linux/fedora-core/4/i386/os/Fedora/RPMS/bind-chroot-9.3.1
-4.i386.rpm
Samozrejme nezapomente zmenit cestu. Fedora pouziva /var/named/chroot.
postinstall scriptlet (using /bin/sh):
safe_replace()
{
f1=$1;
f2=$2;
o=$3;
g=$4;
m=$5;
dc=$6;
if /usr/bin/test "x" = "x$f1" -o "x" = "x$f2" -o "$f1" = "$f2"; then
return 1;
fi;
if /usr/bin/test -r $f1 -a -s $f1 -a '!' -L $f1; then
if /usr/bin/test -r $f2 -a -s $f2 -a '!' -L $f2; then
/bin/mv $f1 $f1'.rpmsave' >/dev/null 2>&1 || :;
/bin/mv $f2 $f1 > /dev/null 2>&1 || :;
else
/bin/rm -f $f2 > /dev/null 2>&1 || :;
fi;
/bin/mv $f1 $f2 > /dev/null 2>&1 || :;
/bin/ln -s $f2 $f1 > /dev/null 2>&1 || :;
else
/bin/rm -f $f1 > /dev/null 2>&1 || :;
if /usr/bin/test -r $f2 -a -s $f2; then
/bin/ln -s $f2 $f1 > /dev/null 2>&1 || :;
else
if /usr/bin/test "x$dc" != "x"; then
echo $dc > $f2;
/bin/ln -s $f2 $f1 > /dev/null 2>&1 || :;
else
return 2;
fi;
fi;
fi;
chown $o':'$g $f2;
chmod $m $f2;
return 0;
}
if /usr/bin/test -r /etc/sysconfig/named && /bin/egrep -q '^ROOTDIR='
/etc/sysconfig/named; then
:;
else
echo ROOTDIR="/var/named/chroot" >>/etc/sysconfig/named;
fi
if /usr/bin/test -r /etc/localtime; then
/bin/cp -fp /etc/localtime "/var/named/chroot/etc/localtime"
fi
safe_replace /etc/rndc.key "/var/named/chroot/etc/rndc.key" root named 644
'';
r=$?;
if /usr/bin/test "$r" -eq 2; then
/bin/rm -f /etc/rndc.key
echo -e 'key "rndckey" {\nalgorithm hmac-md5;\nsecret
"'`/usr/sbin/dns-keygen`'"\n};' > /etc/rndc.key;
safe_replace /etc/rndc.key "/var/named/chroot/etc/rndc.key" root named
644 '';
fi;
default_ndc='include "/etc/rndc.key";'
if [ -f /etc/named.custom ]; then
default_ndc='include "/etc/rndc.key";\ninclude "/etc/named.custom";'
safe_replace /etc/named.custom "/var/named/chroot/etc/named.custom" root
named 644 '' || :;
fi
safe_replace /etc/named.conf "/var/named/chroot/etc/named.conf" root named
644 "$default_ndc"
/usr/bin/find /var/named -xdev -type f | /bin/egrep -v '/var/named/chroot' |
while read f;
do
d=`/usr/bin/dirname $f`;
if test '!' -d "/var/named/chroot$d"; then
mkdir -p "/var/named/chroot$d";
chown named:named "/var/named/chroot$d";
chmod 655 "/var/named/chroot$d";
fi;
safe_replace $f "/var/named/chroot$f" named named 644 '' || :;
done
[ ! -e "/var/named/chroot/dev/random" ] && mknod
"/var/named/chroot/dev/random" c 1 8
[ ! -e "/var/named/chroot/dev/zero" ] && mknod "/var/named/chroot/dev/zero"
c 1 5
[ ! -e "/var/named/chroot/dev/null" ] && mknod "/var/named/chroot/dev/null"
c 1 3
chmod a+r "/var/named/chroot/dev/random" "/var/named/chroot/dev/null"
"/var/named/chroot/dev/"
chown root:named "/var/named/chroot/var/named"
chown named:named "/var/named/chroot/var/named/slaves"
chown named:named "/var/named/chroot/var/named/data"
/etc/init.d/named condrestart >/dev/null 2>&1 || :;
[ -d /selinux ] && [ -x /sbin/restorecon ] && /sbin/restorecon -R
/var/named/chroot >/dev/null 2>&1
:;
preuninstall scriptlet (using /bin/sh):
if [ "$1" = "0" ]; then
/usr/bin/find /var/named/chroot -xdev -type f | while read f;
do
F=`echo $f | sed 's#/var/named/chroot##'`;
if /usr/bin/test -L $F && test `/usr/bin/readlink $F` = $f; then
/bin/rm -f $F;
/bin/mv $f $F;
fi;
done
if test -r /etc/sysconfig/named && grep -q '^ROOTDIR='
/etc/sysconfig/named; then
named_tmp=`/bin/mktemp /tmp/XXXXXX`
grep -v '^ROOTDIR='/var/named/chroot /etc/sysconfig/named >
$named_tmp
mv -f $named_tmp /etc/sysconfig/named
[ -d /selinux ] && [ -x /sbin/restorecon ] && /sbin/restorecon
/etc/sysconfig/named
fi
/etc/init.d/named condrestart >/dev/null 2>&1 || :;
fi
:;
> Dobry den
>
> omlouvam se za lami dotaz, ale bindu a vecem kolem moc
> nerozumim, potrebuji jen napsat par testovacich skriptu pro
> bind. K tomu je ovsem nutne, aby mi bind vubec nabehl.
>
> /etc/init.d/named start mi dava tuto chybovou hlasku:
> "Starting name server BIND /etc/named.conf:21: change
> directory to '/var/lib/named' failed: file not found"
>
> Na radku 21 v prislusnem souboru je:
> "directory "/var/lib/named"
> kteryzto jako adresar existuje a vypada nasledovne:
>
> ls -l /var/lib/named
> celkem 13
> drwxrwxrwx 6 root root 240 2005-07-21 15:29 .
> drwxr-xr-x 37 root root 984 2005-07-21 14:32 ..
> drwxr-xr-x 2 named named 48 2005-03-19 23:55 dyn
> drwxr-xr-x 2 root root 176 2005-07-21 16:19 etc
> -rw-r--r-- 1 root root 158 2001-07-04 09:27 localhost.zone
> drwxr-xr-x 2 root root 48 2005-03-19 23:55 master
> -rw-r--r-- 1 root root 2517 2005-03-19 23:55 root.hint
> drwxr-xr-x 2 named named 48 2005-03-19 23:55 slave
> -rw-r--r-- 1 root root 192 2001-07-04 09:27 127.0.0.zone
>
> Pokud zkousim bind spustit bez chrootu (tak, ze v
> /etc/sysconfig/named je NAMED_RUN_CHROOTED="no"), tak
> dostavam zase tuto hlasku:
> /etc/init.d/named start
> "Starting name server BIND startproc: exit status of parent
> of /usr/sbin/named: 1 failed"
>
> Uprimne receno, nevim, kterym smerem se ubrat. Zkousela jsem
> menit pristupova prava na ten adresar, neco vycist z init
> skriptu, nebo googlit, ale veskera pojednani na toto tema
> jsou ve spanelstine resp. nizozemstine.
> Any advice ?
>
> Diky
>
-- Filip Flajsar
Další informace o konferenci Linux