#!/bin/sh # # Run a backup of the Bacula build directory with some acls # then restore it. # # The fs have to be mount with the acl option (mount -o remount,acl,user_xattr /tmp) # on ubuntu, it needs the attr package # TestName="backup-acl-test" JobName=backup . scripts/functions require_linux scripts/cleanup scripts/copy-confs # # Zap out any schedule in default conf file so that # it doesn't start during our test # outf="tmp/sed_tmp" echo "s% Schedule =%# Schedule =%g" > $outf echo "s/Options {/Options { aclsupport=yes/" >> $outf cp ${cwd}/bin/bacula-dir.conf $cwd/tmp/1 sed -f ${outf} ${cwd}/tmp/1 >${cwd}/bin/bacula-dir.conf d=${cwd}/build/acl uid=`id -u` rm -rf $d mkdir $d mkdir $d/testdir cp ${cwd}/bin/bconsole $d setfacl -m d:user:$uid:r-x $d/testdir setfacl -m d:user:root:-wx $d/testdir setfacl -m user:nobody:--- $d/testdir setfacl -m user:nobody:--- $d/bconsole setfacl -m group:nogroup:--x $d/bconsole cp ${cwd}/bin/bconsole $d/testdir cp ${cwd}/bin/bconsole $d/other setfattr -n bacula.test -v rulez $d/other ( cd $cwd/build getfacl -R acl > $cwd/tmp/org getfattr -R acl > $cwd/tmp/attr.org ) change_jobname Client1 $JobName start_test cat <${cwd}/tmp/bconcmds @output /dev/null messages @$out ${cwd}/tmp/log1.out label volume=TestVolume001 storage=File pool=Default run job=$JobName yes wait messages @# @# now do a restore @# @$out ${cwd}/tmp/log2.out restore where=${cwd}/tmp/bacula-restores select all done yes wait messages @$out quit END_OF_DATA run_bacula check_for_zombie_jobs storage=File stop_bacula ( cd $cwd/tmp/bacula-restores/$cwd/build getfacl -R acl > $cwd/tmp/new getfattr -R acl > $cwd/tmp/attr.new ) diff $cwd/tmp/org $cwd/tmp/new if [ $? -ne 0 ]; then rstat=1 fi diff $cwd/tmp/attr.org $cwd/tmp/attr.new if [ $? -ne 0 ]; then rstat=1 fi rm -rf $d check_two_logs check_restore_diff end_test