PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BIND9 unter Debian im CHROOT



Thovan
02.07.07, 13:49
Hallo,

ich will gerade meinen BIND9 in ein Chroot stecken.
Dabei orientiere ich mich an dieser Anleitung (http://en.tldp.org/HOWTO/Chroot-BIND-HOWTO-2.html#ss2.1).

Jetzt muss ich ja den BIND-Start in /etc/init.d/bind9 anpassen.
Und genau da habe ich ein Problem.
Denn in der Datei steht folgender Hinweis:

# for a chrooted server: "-u bind -t /var/lib/named"
# Don't modify this line, change or create /etc/default/bind9.

Und damit weiß ich jetzt nicht's anzufangen.
Der Parameter -u dürfte den Benutzernamen für das Chroot spezifizieren und -t das Verzeichnis.
Aber wo muss ich die entsprechenden Angaben machen?


Eventuell so (Rot markiert)?

server:/home/GuesT# cat /etc/init.d/bind9
#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# for a chrooted server: "-u bind -t /var/lib/named"
# Don't modify this line, change or create /etc/default/bind9.
OPTIONS="-u bind -t /var/lib/named"
RESOLVCONF=yes

test -f /etc/default/bind9 && . /etc/default/bind9

test -x /usr/sbin/rndc || exit 0

. /lib/lsb/init-functions
DISTRO=$(lsb_release -is 2>/dev/null || echo Debian)

case "$1" in
start)
log_daemon_msg "Starting domain name service..." "bind"

modprobe capability >/dev/null 2>&1 || true

# dirs under /var/run can go away on reboots.
mkdir -p /var/run/bind/run
chmod 775 /var/run/bind/run
chown root:bind /var/run/bind/run >/dev/null 2>&1 || true

if [ ! -x /usr/sbin/named ]; then
log_action_msg "named binary missing - not starting"
log_end_msg 1
exit 1
fi
if start-stop-daemon --start --quiet --exec /usr/sbin/named \
--pidfile /var/run/bind/run/named.pid -- $OPTIONS; then
if [ "X$RESOLVCONF" != "Xno" ] && [ -x /sbin/resolvconf ] ; then
echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.named
fi
log_end_msg 0
else
log_end_msg 1
fi
;;

stop)
log_daemon_msg "Stopping domain name service..." "bind"
if [ "X$RESOLVCONF" != "Xno" ] && [ -x /sbin/resolvconf ] ; then
/sbin/resolvconf -d lo.named
fi
/usr/sbin/rndc stop
log_end_msg $?
;;

reload|force-reload)
log_daemon_msg "Reloading domain name service..." "bind"
/usr/sbin/rndc reload >/dev/null
log_end_msg $?
;;

restart)
$0 stop
sleep 2
$0 start
;;

*)
log_action_msg "Usage: /etc/init.d/bind9 {start|stop|reload|restart|force-reload}"
exit 1
;;
esac

exit 0

403
02.07.07, 20:44
In /etc/default/bind9 sollst du die Sachen(rot markiert) reinschreiben :)

Thovan
03.07.07, 14:37
In /etc/default/bind9 sollst du die Sachen(rot markiert) reinschreiben :)

Steht so in der Datei, aber ich kann in dem init-script die Stelle nicht finden, wo die Einstellungen aus /etc/default/bind9 geladen werden.
Ich versteh halt gerne warum etwas so läuft wie es läuft, damit ich auch verstehe warum es nicht läuft wenn es nicht läuft.

403
04.07.07, 00:53
test -f /etc/default/bind9 && . /etc/default/bind9

damit wird nach der Datei gesucht und wenn sie existiert wird
sie "geladen" Manchmal kannst du auch mit strings nach der
Datei direkt im binary suchen.

Thovan
04.07.07, 07:55
test -f /etc/default/bind9 && . /etc/default/bind9


Oh - da habe ich wohl Tomaten auf den Augen gehabt.
Verrätst Du mir noch wie vom Laden der Datei dann der Inhalt als Parameter für den bind9-Start verwendet wird?

403
04.07.07, 08:24
. ist ein Befehl, der die Einstellungen aus einer beliebigen Datei ins env
fuer Bind aufnimmt. Damit weiss Bind dann "Bescheid." Wenn du in der
Datei mal -u ente statt -u bind reinschreibst, sollte bind auf die Nase fallen :)

Ansonsten: man env

Thovan
04.07.07, 09:49
Wenn du in der
Datei mal -u ente statt -u bind reinschreibst, sollte bind auf die Nase fallen :)

Ansonsten: man env

Ahh, vielen Dank für die Aufklärung.
Ich werde mir bei Gelegenheit mal Shell-Scripting zu Gemüte führen.

Das mit -u ente ist ja klar (wenn es den Benutzer ente nicht gibt bzw. dem die Rechte fehlen).