1
Files
qnap-rc-scripts/idmap.sh
2016-09-04 22:20:40 +03:00

67 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
IDMAP_MAX=4
NET=/usr/local/samba/bin/net
IDMAP_TDB=/usr/local/samba/var/locks/winbindd_idmap.tdb
volume_test=`/sbin/getcfg Public path -f /etc/smb.conf | cut -d '/' -f 3`
[ "x${volume_test}" = "x" ] || volume=${volume_test}
LOCATION=/share/${volume}/.idmap
if [ ! -d ${LOCATION} ]; then
/bin/mkdir ${LOCATION}
fi
PREFIX1=$LOCATION/.idmap.dump
PREFIX2=$LOCATION/.idmap.leave
check_ADS()
{
/bin/grep "security = ADS" /etc/config/smb.conf 2>/dev/null 1>/dev/null
if [ $? != 0 ]; then
echo "ADS off"
exit 1
fi
}
case "$1" in
leave_dump)
check_ADS
_latest_no=`/sbin/getcfg Samba "idmap leave" -d 0`
if [ "x$_latest_no" = "x$IDMAP_MAX" ]; then
_latest_no=1
else
_latest_no=`/usr/bin/expr $_latest_no + 1`
fi
/sbin/setcfg Samba "idmap leave" $_latest_no
$NET idmap dump $IDMAP_TDB > $PREFIX2$_latest_no
;;
dump)
check_ADS
_latest_no=`/sbin/getcfg Samba "idmap dump" -d 0`
if [ "x$_latest_no" = "x$IDMAP_MAX" ]; then
_latest_no=1
else
_latest_no=`/usr/bin/expr $_latest_no + 1`
fi
/sbin/setcfg Samba "idmap dump" $_latest_no
$NET idmap dump $IDMAP_TDB > $PREFIX1$_latest_no
;;
restore)
if [ "x$2" = "x" ]; then
echo $0 restore [idmap_file]
exit 1
fi
$NET idmap restore < $2
/bin/rm -f /usr/local/samba/var/locks/gencache.tdb 2>/dev/null 1>/dev/null
/etc/init.d/winbind restart 2>/dev/null 1>/dev/null
;;
list)
echo PATH = [$LOCATION]
/bin/ls -al $LOCATION
;;
*)
echo "Usage: $0 {leave_dump|dump|restore|list}"
exit 1
esac
exit 0