This file is indexed.

/var/lib/pcp/testsuite/994 is in pcp-testsuite 3.9.10.

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
#!/bin/sh
# PCP QA Test No. 994
# Try to check permissions of package artifacts.
#
# See src/mkpermslist and src/permslist.
#
# Copyright (c) 2013 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

status=0	# success is the default!
$sudo rm -rf $tmp.* $seq.full
trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15

if [ ! -f src/permslist ]
then
    echo "Arrgh .. src/permslist is missing.  Need to"
    echo "	$ cd src; ./mkpermslist"
    echo "in a git tree containg the PCP source and then try again."
    status=1
    exit
fi

# real QA test starts here

# permslist format ...
# src/pmdas/mmv/GNUmakefile|1777|root|root|/var/tmp/mmv
# but also need to expand PCP env vars we expect to find
sed -e 's/ /\\ /g' -e 's/|/ /g' <src/permslist \
    -e 's@$(PCP_USER)@'$PCP_USER@g \
    -e 's@$(PCP_GROUP)@'$PCP_GROUP@g \
    -e 's@$(PCP_PMLOGGERCONTROL_PATH)@'$PCP_PMLOGGERCONTROL_PATH@g \
    -e 's@$(PCP_PMIECONTROL_PATH)@'$PCP_PMIECONTROL_PATH@g \
    -e 's@$(PCP_TMP_DIR)@'$PCP_TMP_DIR@g \
    -e 's@$(PCP_LOG_DIR)@'$PCP_LOG_DIR@g \
    -e 's@$(PCP_VAR_DIR)@'$PCP_VAR_DIR@g \
    -e 's@$(PCP_RUN_DIR)@'$PCP_RUN_DIR@g \
    -e 's@$(PCP_SYSCONF_DIR)@'$PCP_SYSCONF_DIR@g \
| while read makefile mode owner group target optional
do
    if [ ! -f "$target" -a ! -d "$target" ]
    then
	[ -z "$optional" ] && \
	    echo "Error: $target: not found, should have been installed from $makefile"
    else
	# stat line of interest ...
	# Access: (1777/drwxrwxrwt)  Uid: (  0/  root)   Gid: (  0/  root)
	#
	_mode=""
	_owner=""
	_group=""
	eval `stat $target | sed -n -e '/^Access:.*Uid:.*Gid:/{
s/Access: *(/_mode=/
s/\/.*) *Uid: *( *[0-9][0-9]*\/ */ _owner=/
s/) *Gid: *( *[0-9][0-9]*\/ */ _group=/
s/).*//
s/=0*/=/g
p
}'`
	if [ -z "$_mode" -o -z "$_owner" -o -z "$_group" ]
	then
	    echo "Arrgh, failed to extract mode, owner and group from stat(1) output ..."
	    stat $target
	    status=1
	    break
	fi
	#debug# echo "$target: mode: have $_mode expect $mode"
	#debug# echo "$target: owner: have $_owner expect $owner"
	#debug# echo "$target: group: have $_group expect $group"
	if [ "$_mode" != "$mode" ]
	then
	    echo "$target: wrong mode: expected $mode (from $makefile), found $_mode"
	fi
	if [ "$_owner" != "$owner" ]
	then
	    echo "$target: wrong owner: expected $owner (from $makefile), found $_owner"
	fi
	if [ "$_group" != "$group" ]
	then
	    echo "$target: wrong group: expected $group (from $makefile), found $_group"
	fi
    fi
done

# success, all done
status=0

exit