blob: 1a6952fff3be6de59d8a133589441c7e9156b4ba (
plain)
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
|