1#!/bin/bash 2 3[ -f testing.sh ] && . testing.sh 4 5if [ "$(id -u)" -ne 0 ] 6then 7 echo "$SHOWSKIP: chown (not root)" 8 continue 2>/dev/null 9 exit 10fi 11 12# We chown between user "root" and the last user in /etc/passwd, 13# and group "root" and the last group in /etc/group. 14 15USR="$(sed -n '$s/:.*//p' /etc/passwd)" 16GRP="$(sed -n '$s/:.*//p' /etc/group)" 17 18# Set up a little testing hierarchy 19 20rm -rf testdir && 21mkdir testdir && 22touch testdir/file 23F=testdir/file 24 25# Wrapper to reset groups and return results 26 27OUT="&& echo \$(ls -l testdir/file | awk '{print \$3,\$4}')" 28 29#testing "name" "command" "result" "infile" "stdin" 30 31# Basic smoketest 32testing "chown initial" "chown root:root $F $OUT" "root root\n" "" "" 33testing "chown usr:grp" "chown $USR:$GRP $F $OUT" "$USR $GRP\n" "" "" 34testing "chown root" "chown root $F $OUT" "root $GRP\n" "" "" 35# TODO: can we test "owner:"? 36testing "chown :grp" "chown root:root $F && chown :$GRP $F $OUT" \ 37 "root $GRP\n" "" "" 38testing "chown :" "chown $USR:$GRP $F && chown : $F $OUT" \ 39 "$USR $GRP\n" "" "" 40 41rm -rf testdir 42