source: trunk/packs/maint/config_afs.sh @ 11113

Revision 11113, 1.8 KB checked in by jweiss, 26 years ago (diff)
If the CSDB copied out of AFS ends up being zero length it carefully doesn't bother to cat it together with CSDB.local, however, it leaves the zero lenght tmp file around which was later copied over the CSDB, thus causing lossage. (SuidCells too) Also nuke the backslashes at ghudson's request, as they are unnecessary.
  • Property svn:executable set to *
Line 
1#!/bin/sh -
2#
3# $Id: config_afs.sh,v 1.14 1998-02-11 23:35:09 jweiss Exp $
4#
5# This script configures the workstation's notion of AFS.
6# 1. It updates the cell location information from /usr/vice/etc/CellServDB
7# 2. It updates the cell setuid information from /usr/vice/etc/SuidCells
8PATH=/bin:/bin/athena:/usr/bin; export PATH
9
10VICEDIR=/usr/vice/etc
11CELLDB=${VICEDIR}/CellServDB
12SUIDDB=${VICEDIR}/SuidCells
13
14echo "Updating cell location information"
15rm -f ${VICEDIR}/Ctmp
16cp /afs/athena.mit.edu/service/CellServDB ${VICEDIR}/Ctmp &&
17        [ -s ${VICEDIR}/Ctmp ] &&
18        mv -f ${VICEDIR}/Ctmp ${CELLDB}.public &&
19        cat ${CELLDB}.public ${CELLDB}.local >${VICEDIR}/Ctmp 2>/dev/null &&
20        [ -s ${VICEDIR}/Ctmp ] &&
21        rm -f ${CELLDB}.last &&
22        ln ${CELLDB} ${CELLDB}.last &&
23        mv -f ${VICEDIR}/Ctmp ${CELLDB} &&
24        chmod 644 ${CELLDB} && {
25                cmp -s ${CELLDB}.last ${CELLDB} ||
26                awk '
27                        /^>/ {printf("\nfs newcell %s",
28                                substr($1,2,length($1)-1))};
29                        /^[0-9]/ {printf(" %s",$1)};
30                        END {printf("\n")}' ${CELLDB} | sh
31        }
32
33echo "Updating setuid cell information"
34rm -f ${VICEDIR}/Ctmp
35cp /afs/athena.mit.edu/service/SuidCells ${VICEDIR}/Ctmp &&
36        [ -s ${VICEDIR}/Ctmp ] &&
37        mv -f ${VICEDIR}/Ctmp ${SUIDDB}.public &&
38        cat ${SUIDDB}.public ${SUIDDB}.local >${VICEDIR}/Ctmp 2>/dev/null &&
39        [ -s ${VICEDIR}/Ctmp ] &&
40        mv -f ${VICEDIR}/Ctmp ${SUIDDB} &&
41        chmod 644 ${SUIDDB}
42
43echo "Only allowing setuid/setgid programs from the following cells:"
44
45for cellname in `/etc/athena/listsuidcells`; do
46        fs setcell "$cellname" -nosuid
47done
48cat ${SUIDDB} | awk '
49        /^-/    { suid[substr($1,2,length($1)-1)] = 0; }
50        /^[^-]/ { suid[$1] = 1;
51                  cells[numcells++] = $1; }
52        END     { for (i = 0; i < numcells; i++) {
53                        if (suid[cells[i]]) {
54                                printf("fs setcell %s -suid\n", cells[i]);
55                                printf("echo %s\n", cells[i]); } } }' | sh
56
57rm -f ${VICEDIR}/Ctmp
58exit 0
Note: See TracBrowser for help on using the repository browser.