File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / testsuite / chown.test
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:32:36 2021 UTC (3 years, 5 months ago) by misho
Branches: rsync, MAIN
CVS tags: v3_2_3, HEAD
rsync 3.2.3

    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 when rsync is running as root and has -a it correctly sets
    9: # the ownership of the destination.
   10: 
   11: # We don't know what users will be present on this system, so we just
   12: # use random numeric uids and gids.
   13: 
   14: . "$suitedir/rsync.fns"
   15: 
   16: case $0 in
   17: *fake*)
   18:     $RSYNC --version | grep "[, ] xattrs" >/dev/null || test_skipped "Rsync needs xattrs for fake device tests"
   19:     RSYNC="$RSYNC --fake-super"
   20:     TLS_ARGS="$TLS_ARGS --fake-super"
   21:     case "$HOST_OS" in
   22:     darwin*)
   23: 	chown() {
   24: 	    own=$1
   25: 	    shift
   26: 	    xattr -s 'rsync.%stat' "100644 0,0 $own" "${@}"
   27: 	}
   28: 	;;
   29:     solaris*)
   30: 	chown() {
   31: 	    own=$1
   32: 	    shift
   33: 	    for fn in "${@}"; do
   34: 		runat "$fn" "$SHELL_PATH" <<EOF
   35: echo "100644 0,0 $own" > rsync.%stat
   36: EOF
   37: 	    done
   38: 	}
   39: 	;;
   40:     freebsd*)
   41: 	chown() {
   42: 	    own=$1
   43: 	    shift
   44: 	    setextattr -h user "rsync.%stat" "100644 0,0 $own" "${@}"
   45: 	}
   46: 	;;
   47:     *)
   48: 	chown() {
   49: 	    own=$1
   50: 	    shift
   51: 	    setfattr -n 'user.rsync.%stat' -v "100644 0,0 $own" "${@}"
   52: 	}
   53: 	;;
   54:     esac
   55:     ;;
   56: *)
   57:     RSYNC="$RSYNC --super"
   58:     my_uid=`get_testuid`
   59:     root_uid=`get_rootuid`
   60:     if test x"$my_uid" = x; then
   61: 	: # If "id" failed, try to continue...
   62:     elif test x"$my_uid" != x"$root_uid"; then
   63: 	if [ -e "$FAKEROOT_PATH" ]; then
   64: 	    echo "Let's try re-running the script under fakeroot..."
   65: 	    exec "$FAKEROOT_PATH" "$SHELL_PATH" "$0"
   66: 	fi
   67:     fi
   68:     ;;
   69: esac
   70: 
   71: # Build some hardlinks
   72: 
   73: mkdir "$fromdir"
   74: name1="$fromdir/name1"
   75: name2="$fromdir/name2"
   76: echo "This is the file" > "$name1"
   77: echo "This is the other file" > "$name2"
   78: 
   79: chown 5000:5002 "$name1" || test_skipped "Can't chown (probably need root)"
   80: chown 5001:5003 "$name2" || test_skipped "Can't chown (probably need root)"
   81: 
   82: cd "$fromdir/.."
   83: checkit "$RSYNC -aHvv from/ to/" "$fromdir" "$todir"
   84: 
   85: # The script would have aborted on error, so getting here means we've won.
   86: exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>