3 # This program is distributable under the terms of the GNU GPL (see
6 # Test that rsync obeys directory setgid. -- Matt McCutchen
8 .
$srcdir/testsuite
/rsync.fns
12 # Call as: testit <dirname> <dirperms> <file-expected> <program-expected> <dir-expected>
14 todir
="$scratchdir/$1"
17 # Make sure we obey directory setgid when creating a directory to hold multiple transferred files,
18 # even though the directory itself is outside the transfer
19 $RSYNC -rvv "$scratchdir/dir" "$scratchdir/file" "$scratchdir/program" "$todir/to/"
20 check_perms
"$todir/to" $5 "Target $1"
21 check_perms
"$todir/to/dir" $5 "Target $1"
22 check_perms
"$todir/to/file" $3 "Target $1"
23 check_perms
"$todir/to/program" $4 "Target $1"
26 echo "File!" >"$scratchdir/file"
27 echo "#!/bin/sh" >"$scratchdir/program"
28 mkdir
"$scratchdir/dir"
29 chmod 2764 "$scratchdir/dir" || test_skipped
"Can't chmod"
30 chmod 664 "$scratchdir/file"
31 chmod 775 "$scratchdir/program"
32 [ -g "$scratchdir/dir" ] || test_skipped
"The directory setgid bit vanished!"
33 mkdir
"$scratchdir/dir/blah"
34 [ -g "$scratchdir/dir/blah" ] || test_skipped
"Your filesystem doesn't use directory setgid; maybe it's BSD."
36 # Test some target directories
37 testit setgid-off
700 rw------- rwx------ rwx------
38 testit setgid-on
2700 rw------- rwx------ rwx--S---