1#! /bin/sh 2 3# Copyright (C) 2002 by Martin Pool <mbp@samba.org> 4 5# This program is distributable under the terms of the GNU GPL (see 6# COPYING). 7 8# Test that the --chmod option functions correctly. 9 10. $srcdir/testsuite/rsync.fns 11 12# Build some files 13 14fromdir="$scratchdir/from" 15todir="$scratchdir/to" 16checkdir="$scratchdir/check" 17 18mkdir "$fromdir" 19name1="$fromdir/name1" 20name2="$fromdir/name2" 21dir1="$fromdir/dir1" 22dir2="$fromdir/dir2" 23echo "This is the file" > "$name1" 24echo "This is the other file" > "$name2" 25mkdir "$dir1" "$dir2" 26 27chmod 4700 "$name1" || test_skipped "Can't chmod" 28chmod 700 "$dir1" 29chmod 770 "$dir2" 30 31# Copy the files we've created over to another directory 32checkit "$RSYNC -avv \"$fromdir/\" \"$checkdir/\"" "$fromdir" "$checkdir" 33 34# And then manually make the changes which should occur 35umask 002 36chmod ug-s,a+rX "$checkdir"/* 37chmod +w "$checkdir" "$checkdir"/dir* 38 39checkit "$RSYNC -avv --chmod ug-s,a+rX,D+w \"$fromdir/\" \"$todir/\"" "$checkdir" "$todir" 40 41rm -r "$fromdir" "$checkdir" "$todir" 42makepath "$todir" 43makepath "$fromdir/foo" 44touch "$fromdir/bar" 45 46checkit "$RSYNC -avv \"$fromdir/\" \"$checkdir/\"" "$fromdir" "$checkdir" 47chmod o+x "$fromdir"/bar 48 49checkit "$RSYNC -avv --chmod=Fo-x \"$fromdir/\" \"$todir/\"" "$checkdir" "$todir" 50 51# Tickle a bug in rsync 2.6.8: if you push a new directory with --perms off to 52# a daemon with an incoming chmod, the daemon pretends the directory is a file 53# for the purposes of the second application of the incoming chmod. 54 55build_rsyncd_conf 56cat >>"$scratchdir/test-rsyncd.conf" <<EOF 57[test-incoming-chmod] 58 path = $todir 59 read only = no 60 incoming chmod = Fo-x 61EOF 62 63RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon" 64export RSYNC_CONNECT_PROG 65 66rm -r "$todir" 67makepath "$todir" 68 69checkit "$RSYNC -rtvv \"$fromdir/\" localhost::test-incoming-chmod/" "$checkdir" "$todir" 70 71# The script would have aborted on error, so getting here means we've won. 72exit 0 73