Annotation of embedaddon/rsync/testsuite/default-acls.test, revision 1.1
1.1 ! misho 1: #! /bin/sh
! 2:
! 3: # This program is distributable under the terms of the GNU GPL (see
! 4: # COPYING).
! 5:
! 6: # Test that rsync obeys default ACLs. -- Matt McCutchen
! 7:
! 8: . $srcdir/testsuite/rsync.fns
! 9:
! 10: $RSYNC --version | grep ", ACLs" >/dev/null || test_skipped "Rsync is configured without ACL support"
! 11:
! 12: case "$setfacl_nodef" in
! 13: true) test_skipped "I don't know how to use your setfacl command" ;;
! 14: *-k*) opts='-dm u::7,g::5,o:5' ;;
! 15: *) opts='-m d:u::7,d:g::5,d:o:5' ;;
! 16: esac
! 17: setfacl $opts "$scratchdir" || test_skipped "Your filesystem has ACLs disabled"
! 18:
! 19: # Call as: testit <dirname> <default-acl> <file-expected> <program-expected>
! 20: testit() {
! 21: todir="$scratchdir/$1"
! 22: mkdir "$todir"
! 23: $setfacl_nodef "$todir"
! 24: if [ "$2" ]; then
! 25: case "$setfacl_nodef" in
! 26: *-k*) opts="-dm $2" ;;
! 27: *) opts="-m `echo $2 | sed 's/\([ugom]:\)/d:\1/g'`"
! 28: esac
! 29: setfacl $opts "$todir"
! 30: fi
! 31: # Make sure we obey ACLs when creating a directory to hold multiple transferred files,
! 32: # even though the directory itself is outside the transfer
! 33: $RSYNC -rvv "$scratchdir/dir" "$scratchdir/file" "$scratchdir/program" "$todir/to/"
! 34: check_perms "$todir/to" $4 "Target $1"
! 35: check_perms "$todir/to/dir" $4 "Target $1"
! 36: check_perms "$todir/to/file" $3 "Target $1"
! 37: check_perms "$todir/to/program" $4 "Target $1"
! 38: # Make sure get_local_name doesn't mess us up when transferring only one file
! 39: $RSYNC -rvv "$scratchdir/file" "$todir/to/anotherfile"
! 40: check_perms "$todir/to/anotherfile" $3 "Target $1"
! 41: # Make sure we obey default ACLs when not transferring a regular file
! 42: $RSYNC -rvv "$scratchdir/dir/" "$todir/to/anotherdir/"
! 43: check_perms "$todir/to/anotherdir" $4 "Target $1"
! 44: }
! 45:
! 46: mkdir "$scratchdir/dir"
! 47: echo "File!" >"$scratchdir/file"
! 48: echo "#!/bin/sh" >"$scratchdir/program"
! 49: chmod 777 "$scratchdir/dir"
! 50: chmod 666 "$scratchdir/file"
! 51: chmod 777 "$scratchdir/program"
! 52:
! 53: # Test some target directories
! 54: umask 0077
! 55: testit da777 u::7,g::7,o:7 rw-rw-rw- rwxrwxrwx
! 56: testit da775 u::7,g::7,o:5 rw-rw-r-- rwxrwxr-x
! 57: testit da750 u::7,g::5,o:0 rw-r----- rwxr-x---
! 58: testit da750mask u::7,u:0:7,g::7,m:5,o:0 rw-r----- rwxr-x---
! 59: testit noda1 '' rw------- rwx------
! 60: umask 0000
! 61: testit noda2 '' rw-rw-rw- rwxrwxrwx
! 62: umask 0022
! 63: testit noda3 '' rw-r--r-- rwxr-xr-x
! 64:
! 65: # Hooray
! 66: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>