/var/lib/pcp/testsuite/934 is in pcp-testsuite 4.0.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | #!/bin/sh
# PCP QA Test No. 934
# Check mkdir_and_chown() from rc-proc
#
# Copyright (c) 2017 Ken McDonell. All Rights Reserved.
#
seq=`basename $0`
echo "QA output created by $seq"
# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check
_cleanup()
{
cd $here
$sudo rm -rf $tmp $tmp.*
}
# for mkdir_and_chown()
#
_filter()
{
sed \
-e "s/\`/'/g" \
-e '/^mkdir: foo/{
s/: foo/: cannot create directory "foo/
s/bar:/bar":/
s/"/'"'"'/g
}' \
-e '/^chown: foo/{
s/: foo/: changing ownership of "foo"/
s/"/'"'"'/g
}' \
# end
}
_report()
{
# ./: lines are there for Linux, not for ls(1) on other platforms
# like Mac OS X
#
ls -lR | $PCP_AWK_PROG '
NF < 4 { print; next }
$3 != "'"$PCP_USER"'" || $4 != "'"$PCP_GROUP"'" { print "mode=" $1 " name=" $NF; next }
{ print "mode= " $1 " user=pcp group=pcp name=" $NF }' \
| sed \
-e '/^\.:$/d' \
-e '/^total /d' \
-e 's/\. user=/ user=/' \
-e 's/\. name=/ name=/' \
# end
}
status=1 # failure is the default!
$sudo rm -rf $tmp $tmp.* $seq.full
trap "_cleanup; exit \$status" 0 1 2 3 15
. $PCP_SHARE_DIR/lib/rc-proc.sh
mkdir $tmp
cd $tmp
# let the scripts under test set all of the owner and group mode bits
# and pick something sane for other ...
#
umask 2
# for error messages from mkdir(1) ...
#
export LANG=POSIX
# real QA test starts here
echo "Absolute path ... no chown"
mkdir_and_chown $tmp/foo/bar/foobar 755
echo return status=$?
_report
$sudo rm -rf foo
echo
echo "Absolute path ... with chown"
$sudo sh -c ". $PCP_SHARE_DIR/lib/rc-proc.sh; mkdir_and_chown $tmp/foo/bar/foobar 775 $PCP_USER:$PCP_GROUP"
echo return status=$?
_report
$sudo rm -rf foo
echo "Relative path ... no chown"
mkdir_and_chown foo/bar/foobar 755
echo return status=$?
_report
$sudo rm -rf foo
echo
echo "Relative path ... with chown"
$sudo sh -c ". $PCP_SHARE_DIR/lib/rc-proc.sh; mkdir_and_chown foo/bar/foobar 775 $PCP_USER:$PCP_GROUP"
echo return status=$?
_report
$sudo rm -rf foo
echo "Relative ./path, one level already exists ... no chown"
mkdir foo
mkdir_and_chown foo/bar/foobar 775
echo return status=$?
_report
$sudo rm -rf foo
echo
echo "Relative ./path, two levels already exist ... with chown"
mkdir -p foo/bar
$sudo sh -c ". $PCP_SHARE_DIR/lib/rc-proc.sh; mkdir_and_chown foo/bar/foobar 755 $PCP_USER:$PCP_GROUP"
echo return status=$?
_report
$sudo rm -rf foo
echo
echo "Error cases ..."
echo
echo "Permissions for mkdir ..."
mkdir foo
chmod 555 foo
mkdir_and_chown foo/bar/foobar 755 >$tmp.out 2>&1
sts=$?
_filter <$tmp.out
echo return status=$sts
_report
chmod 777 foo
$sudo rm -rf foo
echo
echo "Not root for chown ..."
mkdir_and_chown foo/bar/foobar 755 $PCP_USER:$PCP_GROUP >$tmp.out 2>&1
sts=$?
_filter <$tmp.out
echo return status=$sts
_report
$sudo rm -rf foo
echo
echo "Middle level path component exists and is not a directory ..."
mkdir foo
touch foo/bar
chmod 644 foo/bar
mkdir_and_chown foo/bar/foobar $PCP_USER:$PCP_GROUP 755 >$tmp.out 2>&1
sts=$?
_filter <$tmp.out
echo return status=$sts
_report
$sudo rm -rf foo
echo
echo "Target path exists and is not a directory ..."
mkdir -p foo/bar
touch foo/bar/foobar
mkdir_and_chown foo/bar/foobar $PCP_USER:$PCP_GROUP 755 >$tmp.out 2>&1
sts=$?
_filter <$tmp.out
echo return status=$sts
_report
$sudo rm -rf foo
# success, all done
status=0
exit
|