#
# Run a backup of the Bacula build directory with some acls then restore it.
#
-# Your filesystem must be mounted with the acl option (mount -o remount,acl,user_xattr /tmp)
-# on ubuntu, the attr package must be installed
+# For Linux:
+# Your filesystem must be mounted with the acl option (mount -o remount,acl,user_xattr /tmp)
+# on ubuntu, the attr package must be installed
#
-# For this script to work, you will also need a number of acl packages loaded
-# not default on Debian derivatives:
-# apt-get install acl libacl1 libacl1-dev attr
+# For this script to work, you will also need a number of acl packages loaded
+# not default on Debian derivatives:
+# apt-get install acl libacl1 libacl1-dev attr
+#
+# For OSX and Solaris:
+#
+# Defaults should be ok
+#
+# For FreeBSD:
+#
+# Your filesystem must have acls enabled and needs to be mounted with acls.
+# tunefs -a enable <device>
+# acls mountoption in /etc/fstab
#
TestName="acl-xattr-test"
JobName=backup
;;
SunOS)
;;
+ FreeBSD)
+ # Require getfacl to be installed
+ getfacl Makefile 2>&1 >/dev/null
+ if test $? -ne 0; then
+ echo "$TestName skipped: getfacl not installed"
+ exit 0
+ fi
+
+ # Require lsextattr to be installed
+ lsextattr user Makefile 2>&1 >/dev/null
+ if test $? -ne 0; then
+ echo "$TestName skipped: lsextattr not installed"
+ exit 0
+ fi
+ ;;
*)
echo "Unsupported OS"
exit 0
/bin/runat $d/other 'cat bacula.test' > $cwd/tmp/attr.org
)
;;
+ FreeBSD)
+ setfacl -m d:user:$uid:r-x $d/acl-dir
+ setfacl -m d:user:root:-wx $d/acl-dir
+ setfacl -m user:nobody:--- $d/acl-dir
+ setfacl -m user:nobody:--- $d/bconsole
+ setfacl -m group:nogroup:--x $d/bconsole
+ cp ${cwd}/bin/bconsole $d/acl-dir
+ cp ${cwd}/bin/bconsole $d/other
+ setextattr user bacula.test rulez $d/other 2>/dev/null 1>/dev/null
+
+ ( cd $cwd/build
+ for file in acl/*
+ do
+ getfacl $file
+ done > $cwd/tmp/org
+ getextattr user bacula.test $d/other > $cwd/tmp/attr.org
+ )
+ ;;
+ Darwin)
+ ;;
esac
change_jobname BackupClient1 $JobName
/bin/runat $d/other 'cat bacula.test' > $cwd/tmp/attr.new
)
;;
+ FreeBSD)
+ ( cd $cwd/tmp/bacula-restores/$cwd/build
+ for file in acl/*
+ do
+ getfacl $file
+ done > $cwd/tmp/new
+ getextattr user bacula.test $d/other > $cwd/tmp/attr.new
+ )
+ ;;
esac
diff -u $cwd/tmp/org $cwd/tmp/new