1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00
samba-mirror/testprogs/blackbox/dbcheck.sh
Tim Beale fae5df891c replmd: Try to add forward-link for unknown cross-partition links
Previously Samba would just drop cross-partition links where the link
target object is unknown. Instead, what we want to do is try to add the
forward link for the GUID specified. We can't add the backlink because
we don't know the target, however, dbcheck should be able to fix any
missing backlinks.

The new behaviour should now mean dbcheck will detect the problem and be
able to fix it. It's still not ideal, but it's better than dropping the
link completely.

I've updated the log so that it has higher severity and tells the user
what they need to do to fix it.

These changes now mean that the selftests now detect an error - instead
of completely dropping the serverReference, we now have a missing
backlink. I've updated the selftests to fix up any missing
serverReference backlinks before running dbcheck.

Signed-off-by: Tim Beale <timbeale@catalyst.net.nz>
Reviewed-by: Garming Sam <garming@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12972
2017-08-18 06:07:12 +02:00

64 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
if [ $# -lt 1 ]; then
cat <<EOF
Usage: dbcheck.sh PREFIX
EOF
exit 1;
fi
PREFIX="$1"
shift 1
ARGS=$@
. `dirname $0`/subunit.sh
dbcheck() {
$BINDIR/samba-tool dbcheck --cross-ncs $ARGS
}
# This list of attributes can be freely extended
dbcheck_fix_one_way_links() {
$BINDIR/samba-tool dbcheck --quiet --fix --yes fix_all_string_dn_component_mismatch --attrs="lastKnownParent defaultObjectCategory fromServer rIDSetReferences" --cross-ncs $ARGS
}
# This list of attributes can be freely extended
dbcheck_fix_stale_links() {
$BINDIR/samba-tool dbcheck --quiet --fix --yes remove_plausible_deleted_DN_links --attrs="member msDS-NC-Replica-Locations msDS-NC-RO-Replica-Locations" --cross-ncs $ARGS
}
# This list of attributes can be freely extended
dbcheck_fix_crosspartition_backlinks() {
# we may not know the target yet when we receive a cross-partition link,
# which can result in a missing backlink
$BINDIR/samba-tool dbcheck --quiet --fix --yes fix_all_missing_backlinks --attrs="serverReference" --cross-ncs $ARGS
}
# This test shows that this does not do anything to a current
# provision (that would be a bug)
dbcheck_reset_well_known_acls() {
$BINDIR/samba-tool dbcheck --cross-ncs --reset-well-known-acls $ARGS
}
reindex() {
$BINDIR/samba-tool dbcheck --reindex $ARGS
}
fixed_attrs() {
$BINDIR/samba-tool dbcheck --attrs=cn $ARGS
}
force_modules() {
$BINDIR/samba-tool dbcheck --force-modules $ARGS
}
dbcheck_fix_one_way_links
dbcheck_fix_stale_links
dbcheck_fix_crosspartition_backlinks
testit "dbcheck" dbcheck
testit "reindex" reindex
testit "fixed_attrs" fixed_attrs
testit "force_modules" force_modules
exit $failed