PR/47024: Taylor R Campbell: handle "keys" directory and directory
permissions in general
This commit is contained in:
parent
6b1609c666
commit
d60db5e056
@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $NetBSD: named,v 1.22 2009/08/03 17:45:48 perry Exp $
|
||||
# $NetBSD: named,v 1.23 2012/10/01 18:46:43 christos Exp $
|
||||
#
|
||||
|
||||
# PROVIDE: named
|
||||
@ -20,38 +20,43 @@ required_dirs="$named_chrootdir" # if it is set, it must exist
|
||||
|
||||
named_migrate()
|
||||
{
|
||||
local src=$1
|
||||
local dst=$2$1
|
||||
local src="$1"
|
||||
local dst="$2$1"
|
||||
echo "Migrating $src to $dst"
|
||||
(
|
||||
diff=false
|
||||
cd $src
|
||||
cd "$src"
|
||||
mkdir -p "$dst"
|
||||
for f in $(find . -type f)
|
||||
do
|
||||
f=${f##./}
|
||||
case $f in
|
||||
f="${f##./}"
|
||||
case "$f" in
|
||||
*/*)
|
||||
d=$dst/$(dirname $f)
|
||||
ds="$(dirname "$f")"
|
||||
dd="$dst/$ds"
|
||||
mkdir -p "$dd"
|
||||
chmod "$(stat -f "%p" "$ds" |
|
||||
sed -e 's/.*\([0-7][0-7][0-7][0-7]\)$/\1/g')" "$dd"
|
||||
chown "$(stat -f %u:%g "$ds")" "$dd"
|
||||
;;
|
||||
*) d=$dst
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
mkdir -p $d
|
||||
if [ -r "$dst/$f" ]
|
||||
then
|
||||
if ! cmp $f $dst/$f; then
|
||||
if ! cmp "$f" "$dst/$f"; then
|
||||
diff=true
|
||||
fi
|
||||
else
|
||||
cp -p $f $dst/$f
|
||||
cp -p "$f" "$dst/$f"
|
||||
fi
|
||||
done
|
||||
if $diff; then
|
||||
echo "Cannot complete migration because files are different"
|
||||
echo "Run 'diff -r $src $dst' resolve the differences"
|
||||
else
|
||||
rm -fr $src
|
||||
ln -s $dst $src
|
||||
rm -fr "$src"
|
||||
ln -s "$dst" "$src"
|
||||
fi
|
||||
)
|
||||
}
|
||||
@ -59,6 +64,10 @@ named_migrate()
|
||||
named_precmd()
|
||||
{
|
||||
if [ -z "$named_chrootdir" ]; then
|
||||
if [ ! -d "/etc/namedb/keys" ]; then
|
||||
mkdir -m 775 "/etc/namedb/keys"
|
||||
chown named:named "/etc/namedb/keys"
|
||||
fi
|
||||
return 0;
|
||||
fi
|
||||
|
||||
@ -87,8 +96,7 @@ named_precmd()
|
||||
;;
|
||||
esac
|
||||
|
||||
for i in null random
|
||||
do
|
||||
for i in null random; do
|
||||
if [ ! -c "${named_chrootdir}/dev/$i" ]; then
|
||||
rm -f "${named_chrootdir}/dev/$i"
|
||||
(cd /dev &&
|
||||
@ -99,12 +107,15 @@ named_precmd()
|
||||
if [ ! -h /etc/namedb ]; then
|
||||
named_migrate /etc/namedb ${named_chrootdir}
|
||||
fi
|
||||
if [ \( -r /etc/named.conf \) -a \( ! -h /etc/named.conf \) -a \
|
||||
\( ! -r ${named_chrootdir}/etc/named.conf \) ]
|
||||
then
|
||||
mv /etc/named.conf ${named_chrootdir}/etc/named.conf
|
||||
ln -s ${named_chrootdir}/etc/named.conf /etc/named.conf
|
||||
fi
|
||||
|
||||
for i in named.conf rndc.key; do
|
||||
if [ \( -r "/etc/$i" \) -a \( ! -h "/etc/$i" \) -a \
|
||||
\( ! -r "${named_chrootdir}/etc/$i" \) ]; then
|
||||
mv "/etc/$i" "${named_chrootdir}/etc/$i"
|
||||
ln -s "${named_chrootdir}/etc/$i" "/etc/$i"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ \( ! -r ${named_chrootdir}/etc/named.conf \) -a \
|
||||
\( -r ${named_chrootdir}/etc/namedb/named.conf \) ]; then
|
||||
ln -s namedb/named.conf ${named_chrootdir}/etc
|
||||
|
Loading…
x
Reference in New Issue
Block a user