X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=regress%2Ftests%2Facl-xattr-test;h=c27e2fd2f142131c4d811786e01691a2ca30054a;hb=00cbfd49cffc863ee5b7c0d6fe37cb75138c83ee;hp=3a28ab2a2ac15a15e0df8106afe740f66432ba6f;hpb=e2a6d39c181134c5a0941e4608d92ee7c5c6fbc9;p=bacula%2Fbacula diff --git a/regress/tests/acl-xattr-test b/regress/tests/acl-xattr-test index 3a28ab2a2a..c27e2fd2f1 100755 --- a/regress/tests/acl-xattr-test +++ b/regress/tests/acl-xattr-test @@ -1,14 +1,28 @@ #!/bin/sh # -# Run a backup of the Bacula build directory with some acls -# then restore it. +# 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 +# acls mountoption in /etc/fstab +# +# For NetBSD: +# +# Defaults should be ok (As NetBSD doesn't support native acls we skip that test). # TestName="acl-xattr-test" JobName=backup @@ -26,10 +40,10 @@ case `uname -s` in exit 0 fi - # Require attr to be installed - attr -l Makefile 2>&1 >/dev/null + # Require getfattr to be installed + getfattr -d Makefile 2>&1 >/dev/null if test $? -ne 0; then - echo "$TestName skipped: attr not installed" + echo "$TestName skipped: getfattr not installed" exit 0 fi ;; @@ -37,6 +51,29 @@ case `uname -s` in ;; 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 + ;; + NetBSD) + # 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 @@ -73,11 +110,11 @@ case `uname -s` in setfacl -m group:nogroup:--x $d/bconsole cp ${cwd}/bin/bconsole $d/acl-dir cp ${cwd}/bin/bconsole $d/other - attr -s bacula.test -V rulez $d/other 2>/dev/null 1>/dev/null + setfattr -h -n user.bacula.test -v rulez $d/other 2>/dev/null 1>/dev/null ( cd $cwd/build getfacl -R acl > $cwd/tmp/org - attr -g bacula.test $d/other > $cwd/tmp/attr.org + getfattr -h -n user.bacula.test $d/other > $cwd/tmp/attr.org ) ;; Darwin) @@ -122,6 +159,33 @@ EOF /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 + ) + ;; + NetBSD) + cp ${cwd}/bin/bconsole $d/other + setextattr user bacula.test rulez $d/other 2>/dev/null 1>/dev/null + + ( cd $cwd/build + cp /dev/null $cwd/tmp/org + getextattr user bacula.test $d/other > $cwd/tmp/attr.org + ) + ;; esac change_jobname BackupClient1 $JobName @@ -157,7 +221,7 @@ case `uname -s` in Linux) ( cd $cwd/tmp/bacula-restores/$cwd/build getfacl -R acl > $cwd/tmp/new - attr -g bacula.test $d/other > $cwd/tmp/attr.new + getfattr -h -n user.bacula.test $d/other > $cwd/tmp/attr.new ) ;; Darwin) @@ -172,6 +236,21 @@ case `uname -s` in /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 + ) + ;; + NetBSD) + ( cd $cwd/tmp/bacula-restores/$cwd/build + cp /dev/null $cwd/tmp/new + getextattr user bacula.test $d/other > $cwd/tmp/attr.new + ) + ;; esac diff -u $cwd/tmp/org $cwd/tmp/new