This file is indexed.

/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