Commit | Line | Data |
---|---|---|
b31243b4 WD |
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 directory setgid. -- Matt McCutchen | |
7 | ||
8 | . $srcdir/testsuite/rsync.fns | |
9 | ||
10 | umask 077 | |
11 | ||
12 | # Call as: testit <dirname> <dirperms> <file-expected> <program-expected> <dir-expected> | |
13 | testit() { | |
14 | todir="$scratchdir/$1" | |
15 | mkdir "$todir" | |
16 | chmod $2 "$todir" | |
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" | |
24 | } | |
25 | ||
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." | |
35 | ||
36 | # Test some target directories | |
37 | testit setgid-off 700 rw------- rwx------ rwx------ | |
38 | testit setgid-on 2700 rw------- rwx------ rwx--S--- | |
39 | ||
40 | # Hooray | |
41 | exit 0 |