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