File: check_symlink

package info (click to toggle)
tiger 2.2.4-22
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,188 kB
  • ctags: 240
  • sloc: sh: 8,388; ansic: 2,109; makefile: 141; perl: 106
file content (91 lines) | stat: -rwxr-xr-x 1,673 bytes parent folder | download
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
#!/bin/sh
#
#     tiger - A UN*X security checking system
#     Copyright (C) 1993 Douglas Lee Schales, David K. Hess, David R. Safford
#
#     Please see the file `COPYING' for the complete copyright notice.
#
# check_????  - 04/22/93
#
#-----------------------------------------------------------------------------

basedir=${TIGERHOMEDIR:=.}

for parm
do
   case $parm in
   -B) basedir=$2; break;;
   esac
done

[ ! -r $basedir/config ] && {
  echo "--ERROR-- [init002e] No 'config' file in \`$basedir'."
  exit 1
}

. $basedir/config

haveallof()
{
  retval=0
  what=$1
  shift
  for file
  do
    eval cmd=\$$file
    [ ! -n "$cmd" ] && {
      echo "--ERROR-- [init001e] Don't have all required $what (missing $file)"
      retval=1
    }
  done
  return $retval
}

echo
echo "# Attempting to perform miscellaneous checks..."

haveallof commands AWK CHMOD CHOWN LN LS RM|| exit 1
haveallof variables WORKDIR || exit 1


getpermit()
{
   $LS $LSLINK -ld $1 |
   $AWK '{
      for(i=2;i<11;i++){
	 c = substr($1, i, 1);
         if(c == "-" || c == "S")
	     printf("0 ");
         else
             printf("1 ");
      }
      printf("\n");
   }'
}

#
# See if chown/chmod chase symbolic links...
#
> $WORKDIR/file.$$
$CHMOD 644 $WORKDIR/file.$$
$LN -s $WORKDIR/file.$$ $WORKDIR/link.$$
$CHMOD 666 $WORKDIR/link.$$

getpermit $WORKDIR/file.$$ | {
  read ur uw ux gr gw gx or ow ox
  [ "$gw" = "1" ] && {
    echo "--INFO-- This systems chmod follows symbolic links."
  }
}

$CHOWN bin $WORKDIR/link.$$
$LS -l $LSGROUP $WORKDIR/file.$$ | {
  read p l owner rest
  [ "$owner" != "root" ] && {
    echo "--INFO-- This systems chown follows symbolic links."
  }
}