mirror of
https://github.com/RsyncProject/rsync.git
synced 2025-12-23 23:28:17 -05:00
- use `grep -E` and `grep -F` (`egrep` and `fgrep` are non-standard) - use same hashbang style for all test scripts - use explicit comparisons in test scripts - remove redundant ; from test scripts - make test script not executable, just like all the other scripts - unify codestyle across all test scripts - make openssl license exception clearer by having it at the top - use modern links in COPYING. The text now matches: https://www.gnu.org/licenses/gpl-3.0.txt - fix typo
49 lines
1.6 KiB
Bash
49 lines
1.6 KiB
Bash
#!/bin/sh
|
|
|
|
# This program is distributable under the terms of the GNU GPL (see
|
|
# COPYING).
|
|
|
|
# Test that rsync obeys directory setgid. -- Matt McCutchen
|
|
|
|
. $suitedir/rsync.fns
|
|
|
|
umask 077
|
|
|
|
# Call as: testit <dirname> <dirperms> <file-expected> <program-expected> <dir-expected>
|
|
testit() {
|
|
todir="$scratchdir/$1"
|
|
mkdir "$todir"
|
|
chmod $2 "$todir"
|
|
# Make sure we obey directory setgid when creating a directory to hold multiple transferred files,
|
|
# even though the directory itself is outside the transfer
|
|
$RSYNC -rvv "$scratchdir/dir" "$scratchdir/file" "$scratchdir/program" "$todir/to/"
|
|
check_perms "$todir/to" $5 "Target $1"
|
|
check_perms "$todir/to/dir" $5 "Target $1"
|
|
check_perms "$todir/to/file" $3 "Target $1"
|
|
check_perms "$todir/to/program" $4 "Target $1"
|
|
}
|
|
|
|
mkdir "$scratchdir/dir"
|
|
# Cygwin has a persistent default dir ACL that ruins this test.
|
|
case `getfacl "$scratchdir/dir" 2>/dev/null || true` in
|
|
*default:user::*) test_skipped "The default ACL mode interferes with this test" ;;
|
|
esac
|
|
|
|
echo "File!" >"$scratchdir/file"
|
|
echo "#!/bin/sh" >"$scratchdir/program"
|
|
|
|
chmod u=rwx,g=rw,g+s,o=r "$scratchdir/dir" || test_skipped "Can't chmod"
|
|
chmod 664 "$scratchdir/file"
|
|
chmod 775 "$scratchdir/program"
|
|
|
|
[ -g "$scratchdir/dir" ] || test_skipped "The directory setgid bit vanished!"
|
|
mkdir "$scratchdir/dir/blah"
|
|
[ -g "$scratchdir/dir/blah" ] || test_skipped "Your filesystem doesn't use directory setgid; maybe it's BSD."
|
|
|
|
# Test some target directories
|
|
testit setgid-off 700 rw------- rwx------ rwx------
|
|
testit setgid-on u=rwx,g=rw,g+s,o-rwx rw------- rwx------ rwx--S---
|
|
|
|
# Hooray
|
|
exit 0
|