home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / base / install / postinstall < prev    next >
Text File  |  1998-08-19  |  37KB  |  1,248 lines

  1. #ident    "@(#)postinstall    16.2    98/03/03"
  2.  
  3. # For an UPGRADE/OVERLAY, I may want to see what's going on here
  4. errflg=0
  5.  
  6. DEBUGFILE=/etc/inst/up/updebug.sh
  7.  
  8. [ -f $DEBUGFILE ] && {
  9.     # if UPDEBUG is set to YES in updebug.sh on the boot floppy,
  10.     # cp it over so that we can see what's going on in pkg installation 
  11.     # of other packages.  This if for debugging only.
  12.  
  13.     grep "UPDEBUG=YES"  $DEBUGFILE >/dev/null 2>&1
  14.     [ $? -eq 0 ] && cp $DEBUGFILE /usr/sbin/pkginst/updebug
  15.  
  16.     . $DEBUGFILE
  17. }
  18.  
  19. [ "$UPDEBUG" = "YES" ] && set -x && goany
  20.  
  21. turnoff () {
  22. cd /etc/conf/sdevice.d
  23. for i in $*
  24. do
  25. if [ -f $i ]
  26. then
  27. ed $i << END > /dev/null 2>&1
  28. 1,\$s/    Y    /    N    /
  29. w
  30. w
  31. q
  32. END
  33. fi
  34. done
  35. }
  36.  
  37. turnon () {
  38. cd /etc/conf/sdevice.d
  39. for i in $*
  40. do
  41. if [ -f $i ]
  42. then
  43. ed $i << END > /dev/null 2>&1
  44. 1,\$s/    N    /    Y    /
  45. w
  46. w
  47. q
  48. END
  49. fi
  50. done
  51. }
  52.  
  53. turnon cdfs clone connld fdfs intp ipc lp nmi osm prf weitek
  54.  
  55. error=no
  56. while read from to comment
  57. do
  58.     echo $to         # for installf
  59.  
  60.     # The following is being added to support Upgrade Installation.
  61.     # This eliminates lots of WARNINGS about identical files.
  62.     rm -f $to
  63.  
  64.     cp $from $to >&2 || error=yes
  65. done <<!ENDOFLIST! | installf $PKGINST -
  66.     /etc/fs/bfs/mkfs /usr/lib/fs/bfs/mkfs
  67.     /etc/fs/sfs/mkfs /usr/lib/fs/sfs/mkfs
  68.     /sbin/fstyp /usr/sbin/fstyp
  69.     /sbin/mkfs /usr/sbin/mkfs
  70.     /sbin/rc1 /usr/sbin/rc1
  71.     /sbin/rc3 /usr/sbin/rc3
  72. !ENDOFLIST!
  73.  
  74. # /sbin/jsh is now hard-linked to /sbin/sh in sysutil file
  75.  
  76. # Set up node name.
  77. # Note:  uname -S creates the file /etc/nodename.
  78. #
  79. /bin/uname -S ${NODE:=`/bin/uname -n`}
  80. installf ${PKGINST} /etc/nodename
  81.  
  82. # Create files for the TCB and set security attributes.
  83. #
  84. # NOTE: files that are being installed by the OAM-EU, that also
  85. # require privilege, are candidates for having their privilege
  86. # set fall out of sync with those specified in the prototype file.
  87. # Since there isn't a user level command to see the privileges
  88. # set for those files at this point, this script *must* be kept
  89. # in sync with the prototype files.
  90.  
  91. while read from to mac fixed inher
  92. do
  93.     # Check for comments.
  94.     test "$from" = "#" && continue
  95.  
  96.     # The following is being added to support Upgrade Installation.
  97.     # This eliminates lots of WARNINGS about identical files.
  98.     rm -f $to
  99.  
  100.     cp $from $to >&2 || error=yes
  101.  
  102.     installf ${PKGINST} $to f \? \? \? $mac $fixed $inher
  103. done <<!ENDOFLIST! 
  104.     /etc/fs/bfs/fsck /usr/lib/fs/bfs/fsck 2 NULL allprivs
  105.     /etc/fs/bfs/mount /usr/lib/fs/bfs/mount 2 NULL allprivs
  106.     /etc/fs/sfs/fsck /usr/lib/fs/sfs/fsck 2 NULL dacread,dacwrite,dev,compat,macread,macwrite
  107.     /etc/fs/sfs/mount /usr/lib/fs/sfs/mount 2 NULL mount,dacwrite,macwrite,setflevel,macread,dacread
  108.     /sbin/bcheckrc /usr/sbin/bcheckrc 2 NULL sysops,macwrite,dacwrite,setflevel,dev,mount,macread,dacread,compat,owner
  109.     /sbin/brc /usr/sbin/brc 2 NULL NULL
  110.     /sbin/fsck /usr/sbin/fsck 2 NULL macread,macwrite,dacread,dacwrite,dev,compat
  111.     /sbin/init /usr/sbin/init 2 NULL audit,owner,dev,dacwrite,macwrite,macread
  112.     /sbin/mknod /usr/sbin/mknod 1 NULL dacread,macread,dacwrite,macwrite,fsysrange,filesys,owner
  113.     /sbin/mount /usr/sbin/mount 1 NULL mount,dacwrite,dacread,macwrite,macread,setflevel,owner
  114.     /sbin/mountall /usr/sbin/mountall 2 NULL mount,dacwrite,dacread,macwrite,macread,setflevel,dev,compat,setspriv,setupriv,owner
  115.     /sbin/rc0 /usr/sbin/rc0 2 NULL mount,setflevel,macwrite,dacwrite,macread,dacread,compat,owner,dev,sysops,driver,fsysrange,audit,setplevel
  116.     /sbin/rc2 /usr/sbin/rc2 2 NULL sysops,macread,macwrite,dacwrite,dev,compat,mount,setflevel,setspriv,setupriv,dacread,filesys,multidir,driver,fsysrange,setplevel,audit,setuid,owner
  117.     /sbin/rc6 /usr/sbin/rc6 2 NULL mount,setflevel,macwrite,dacwrite,macread,dacread,compat,owner,dev,sysops,driver,fsysrange
  118.     # Although /sbin/sh is being installed by the ICD we're
  119.     # not going to mark it here since it requires a seperate
  120.     # set of privileges than the other shells.
  121.     /sbin/shutdown /usr/sbin/shutdown 2 NULL mount,setflevel,macwrite,dacwrite,macread,dacread,compat,owner,dev,sysops,driver,fsysrange,audit,setplevel
  122.     /sbin/uadmin /usr/sbin/uadmin 2 NULL sysops
  123.     /sbin/umount /usr/sbin/umount 2 NULL mount,setflevel,macwrite,macread,dacread,owner,dacwrite
  124.     /sbin/umountall /usr/sbin/umountall 2 NULL mount,setflevel,macwrite,dev,dacwrite,macread,dacread,owner,compat
  125.     /etc/fs/sfs/df /usr/lib/fs/sfs/df 1 NULL macread,dacread,compat,dev
  126.     /sbin/creatiadb /usr/sbin/creatiadb 2 NULL dacwrite,macwrite,setflevel
  127.     /sbin/filepriv /usr/sbin/filepriv 1 NULL NULL
  128. !ENDOFLIST!
  129.  
  130. installf ${PKGINST} /sbin/sh f ? ? ? 1 NULL allprivs
  131. installf ${PKGINST} /usr/bin/chmod f ? ? ? 1 NULL owner,macread,macwrite,dacread
  132. installf ${PKGINST} /usr/bin/cpio f ? ? ? 1 NULL macread,macwrite,dacwrite,dacread,fsysrange,filesys,compat,owner,multidir,setplevel,setflevel
  133. installf ${PKGINST} /usr/bin/false f ? ? ? 1 NULL NULL
  134. installf ${PKGINST} /usr/bin/find f ? ? ? 1 NULL dacread,dacwrite,macread,macwrite,compat
  135. installf ${PKGINST} /usr/bin/mkdir f ? ? ? 1 macupgrade multidir,setflevel,macread,dacread,macwrite,dacwrite,fsysrange
  136. installf ${PKGINST} /usr/bin/true f ? ? ? 1 NULL NULL
  137. installf ${PKGINST} /sbin/sync f ? ? ? 2 NULL NULL
  138. installf ${PKGINST} /etc/TIMEZONE f ? ? ? 1 NULL NULL
  139. installf ${PKGINST} /etc/loadmods f ? ? ? 2 NULL NULL
  140.  
  141. # In the prototype file, mv is listed as having inheritable
  142. # privileges, and ln/cp are listed as being links to mv.  ln/cp don't
  143. # have privileges listed (can't specify attributes of a link), but
  144. # since they are all the same vnode -- and privs are associated with a
  145. # vnode, not a path -- they all have privs.  This is what we want.
  146. #
  147. # But we also need explicit entries for ln and cp in the Privilege
  148. # Data File (PDF).  This is needed, for example, by the code later in
  149. # this file that puts entries in the TFM based on the privileges
  150. # listed in the PDF.  This filepriv puts ln/cp in the PDF.
  151. /sbin/filepriv -i macread,macwrite,dacread,dacwrite,owner,compat,fsysrange,filesys /usr/bin/ln /sbin/ln /usr/bin/cp /sbin/cp 2>/dev/null
  152.  
  153. #make necessary links for files copied above
  154. if [ -f /usr/sbin/switchout ]
  155. then
  156.     rm /usr/sbin/switchout 
  157. fi
  158. installf $PKGINST /usr/sbin/switchout=/usr/sbin/mkfs l
  159.  
  160. ## hard link the other shells
  161. if [ -f /usr/bin/jsh ]
  162. then
  163.     rm /usr/bin/jsh 
  164. fi
  165. if [ -f /usr/lib/rsh ]
  166. then
  167.     rm /usr/lib/rsh 
  168. fi
  169. if [ -f /usr/sbin/sh ]
  170. then
  171.     rm /usr/sbin/sh 
  172. fi
  173. if [ -f /usr/sbin/jsh ]
  174. then
  175.     rm /usr/sbin/jsh 
  176. fi
  177. installf $PKGINST /usr/bin/jsh=/usr/bin/sh l
  178. installf $PKGINST /usr/lib/rsh=/usr/bin/sh l
  179. installf $PKGINST /usr/sbin/sh=/usr/bin/sh l
  180. installf $PKGINST /usr/sbin/jsh=/usr/bin/sh l
  181.  
  182. # These files do not reside in the TCB and are installed by ICD.
  183.  
  184. #   Installf the ICD portion which is not a part of TCB files. 
  185.  
  186. if [ -d /dev/rmt ]
  187. then
  188.     installf ${PKGINST} /dev/rmt d \? \? \? 1 NULL NULL
  189. fi
  190.  
  191. # nodes for log devices are made in nodes.d so we need to give labels now.
  192.  
  193. installf ${PKGINST} /dev/log c 9 5 444 root root 1 NULL NULL
  194. installf ${PKGINST} /dev/conslog c 9 0 222 root root 1 NULL NULL
  195.  
  196. # SFS lost+found dirs get level from special file: SYS_PRIVATE
  197.  
  198. cat /etc/vfstab | while read dev rdev dir fstype junk
  199. do
  200.     case "${dev}" in
  201.     /dev/dsk/c1d*s* | /dev/dsk/c1t1d*s* | /dev/idsk* )
  202.         if [ ${fstype} = "sfs" ]
  203.         then
  204.             installf ${PKGINST} ${dir}/lost+found d \? \? \? 2 NULL NULL
  205.         fi
  206.         ;;
  207.     esac
  208. done
  209. installf ${PKGINST} /lost+found d \? \? \? 2 NULL NULL
  210.  
  211. # cmds with level: USER_PUBLIC
  212.  
  213. while read file type
  214. do
  215.     installf ${PKGINST} $file $type
  216. done <<!ENDOFLIST!
  217.     /etc/fs/s5/mount f
  218.     /etc/fs/bfs/mkfs f
  219.     /usr/bin/rmdir f
  220. !ENDOFLIST!
  221.  
  222. # /sbin/setmnt sets these attributes for /etc/mnttab
  223. installf ${PKGINST} /etc/mnttab v 0444 root sys 1 NULL NULL
  224.  
  225. #run creatiadb for new IA data files
  226. /sbin/creatiadb
  227.  
  228. if [ ! -d /proc ]
  229. then
  230.     # make directory node for /proc since we
  231.     # don't want to modify /proc if it is
  232.     # already up and running!
  233.     installf $PKGINST /proc d 555 root root || error=yes
  234. fi
  235.  
  236. if [ ! -d /dev/fd ]
  237. then
  238.     installf $PKGINST /dev/fd d 555 root root || error=yes
  239. fi
  240.  
  241. #
  242. # install /var/sadm/install/contents since this file cannot be in pkgmap
  243. # and needs to be contained in itself(two installf lines are needed)
  244.  
  245. # For an OVERLAY, the contents file already contains itself
  246.  
  247. [ "$PKGINSTALL_TYPE" != "OVERLAY" ] && {
  248.  
  249.     installf -c inst $PKGINST /var/sadm/install/contents v 0644 root root 
  250.     installf -c inst $PKGINST /var/sadm/install/contents v ? ? ?
  251. }
  252.  
  253. ############################################
  254. #
  255. #
  256. # echo directories to /etc/security/MLD/pkgcore file for 
  257. # MLD creation, if ES gets installed.
  258. #
  259. echo "/var/mail" >/etc/security/MLD/pkgcore
  260. echo "/var/spool/cron/crontabs" >>/etc/security/MLD/pkgcore
  261. echo "/var/spool/cron/atjobs" >>/etc/security/MLD/pkgcore
  262. echo "/var/preserve" >>/etc/security/MLD/pkgcore
  263.  
  264. installf ${PKGINST} /etc/security/MLD/pkgcore f 0644 root sys 2 NULL NULL
  265. rm -f /etc/emulator.dflt
  266.  
  267. ###############################################
  268. ## this portion is taken from BNU's postinstall
  269. ################################################
  270.  
  271. #
  272. #    Postinstall for "Basic Networking Utilities"
  273. #
  274. #    Carefully install new local uucp information files if none exist or
  275. #    old style files exist.
  276.  
  277. INSPATH=/install/new
  278. PKGNAME=$NAME
  279.  
  280. TEMPROOT=/usr/tmp/root.$$
  281. TEMPUUCP=/usr/tmp/uucp.$$
  282.  
  283. #### Make sure the spools have been converted to the new format
  284.  
  285. /usr/lib/uucp/bnuconvert
  286.  
  287. #### Setup initialization cleanup script for rc2
  288.  
  289. installf $PKGINST /var/spool/cron/crontabs/uucp v 0600 uucp uucp 1 NULL NULL || error=yes
  290.  
  291. #### These are the default crontab entries
  292.  
  293. CLEANUP='45 23 * * * $TFADMIN /usr/lib/uucp/uudemon.clean  > /dev/null 2>&1'
  294. HOUR='41,11 * * * * $TFADMIN /usr/lib/uucp/uudemon.hour > /dev/null'
  295. POLL='1,30 * * * * $TFADMIN /usr/lib/uucp/uudemon.poll > /dev/null'
  296.  
  297. ### The $TFADMIN will allow them to gain privilege on an ES system
  298.  
  299. #### Install crontab entries if crontab exists and entries do not exist
  300.  
  301. crontab -l root >$TEMPROOT 2>/dev/null
  302. crontab -l uucp >$TEMPUUCP 2>/dev/null
  303.  
  304. if grep "uudemon.admin" $TEMPUUCP >/dev/null 2>&1
  305. then  :
  306. else
  307.     if grep "uudemon.admin" $TEMPROOT >>$TEMPUUCP 2>&1
  308.     then :
  309.     else :
  310.     fi
  311. fi
  312.  
  313.  
  314. if grep "uudemon.clean" $TEMPUUCP >/dev/null 2>&1
  315. then  :
  316. else
  317.     if grep "uudemon.clean" $TEMPROOT >>$TEMPUUCP 2>&1
  318.     then :
  319.     else
  320.     echo "$CLEANUP" >> $TEMPUUCP 2>/dev/null
  321.     fi
  322. fi
  323.  
  324. if grep "uudemon.hour" $TEMPUUCP >/dev/null 2>&1
  325. then  :
  326. else
  327.     if grep "uudemon.hour" $TEMPROOT >>$TEMPUUCP 2>&1
  328.     then :
  329.     else
  330.     echo "$HOUR" >> $TEMPUUCP 2>/dev/null
  331.     fi
  332. fi
  333.  
  334. if grep "uudemon.poll" $TEMPUUCP >/dev/null 2>&1
  335. then  :
  336. else
  337.     if grep "uudemon.poll" $TEMPROOT >>$TEMPUUCP 2>&1
  338.     then :
  339.     else
  340.     echo "$POLL" >> $TEMPUUCP 2>/dev/null
  341.     fi
  342. fi
  343.  
  344. # remove uudemon entries from root's crontab
  345.  
  346. crontab -l root 2>/dev/null | grep -v uudemon > $TEMPROOT 2>/dev/null
  347.  
  348. # replace uucp's crontab, and (if successful) root's
  349.  
  350. if [ -r /var/spool/cron/crontabs/uucp ]
  351. then
  352.     /usr/bin/chown uucp /var/spool/cron/crontabs/uucp >/dev/null 2>&1
  353. fi
  354.  
  355. if /sbin/su uucp -c "crontab $TEMPUUCP" >/dev/null 2>&1
  356. then
  357.     /sbin/su root -c "crontab $TEMPROOT" >/dev/null 2>&1
  358. else
  359.         echo "**WARNING**   ${PKGNAME} cannot install crontab entries."
  360.     echo "Demons will not be running when installation is finished."
  361.     echo "They will have to be added later."
  362. fi
  363. # change level of uucp if chlvl is installed
  364. # also remove root file if it is empty
  365. if [ -x /sbin/chlvl ]
  366. then
  367.     /sbin/chlvl SYS_PRIVATE /var/spool/cron/crontabs/uucp
  368.     if [ ! -s /var/spool/cron/crontabs/root ]
  369.     then
  370.         /usr/bin/rm -f /var/spool/cron/crontabs/root
  371.     fi
  372. fi
  373.  
  374. rm -f $TEMPUUCP $TEMPROOT >/dev/null 2>&1
  375.  
  376. #
  377. # We need to convert the /etc/device.tab file created 
  378. # by the boot floppies from a 4.0 version to a "DDB"
  379. # version.  Run ddbconv to do so.
  380. # This command will be run again with the "-s" option
  381. # if and when the "es" package is installed.
  382. #
  383.  
  384. ddbconv
  385.  
  386. ### allow uucp to get privilege for cron shell scripts
  387.  
  388. ############### Begin UPGRADE AND OVERLAY #################
  389. #
  390. # For an OVERLAY case, we need to check if the user has already been
  391. # adminuser'ed.  I could special case this for JUST the case where
  392. # PKGINSTALL_TYPE=OVERLAY, but that seems like a waste of effort.
  393. #
  394. # We can't just skip this for an OVERLAY, becasue the theory behind
  395. # doing an OVERLAY install if to recover a corrupted system.  If the
  396. # TFM database is corrupted, then we need to add uucp again !
  397. #
  398.  
  399. adminuser uucp >/dev/null 2>&1
  400.  
  401. [ $? != 0 ] && /usr/bin/adminuser -n uucp
  402.  
  403. /usr/bin/adminuser -a uudemon.poll:/usr/lib/uucp/uudemon.poll:macread:setplevel:sysops uucp >/dev/null 2>&1
  404. /usr/bin/adminuser -a uudemon.hour:/usr/lib/uucp/uudemon.hour:macread:setplevel:sysops uucp >/dev/null 2>&1
  405. /usr/bin/adminuser -a uudemon.clean:/usr/lib/uucp/uudemon.clean:macread:setplevel:sysops uucp >/dev/null 2>&1
  406.  
  407. #
  408. # add entries for MLDs to the /etc/security/MLD/bnu file
  409. #
  410. echo "/var/uucp" >>/etc/security/MLD/bnu
  411. echo "/var/spool/uucp" >>/etc/security/MLD/bnu
  412. echo "/var/spool/uucppublic" >>/etc/security/MLD/bnu
  413. echo "/var/spool/locks" >>/etc/security/MLD/bnu
  414.  
  415. installf ${PKGINST} /etc/security/MLD/bnu f 0644 root sys 2 NULL NULL
  416.  
  417. ##############################################
  418. # make sure serial mouse module configured, other
  419. # mice types are not configured.
  420. ##############################################
  421.  
  422. turnon mse
  423. turnoff smse bmse m320
  424.  
  425. ##############################################
  426. # portion of this is taken from lp postinstall
  427. ##############################################
  428.  
  429. LPSCHED=/usr/lib/lp/lpsched
  430. VARSPOOLLP=/var/spool/lp
  431.  
  432. nodename=`uname -n`
  433. VARSPOOLLP_TMP=${VARSPOOLLP}/tmp/${nodename}
  434. VARSPOOLLP_REQUESTS=${VARSPOOLLP}/requests/${nodename}
  435.  
  436. cd /
  437. ${LPSCHED} >/dev/null 2>&1
  438.  
  439. echo "copy_files: nocopy" > /etc/default/lp
  440. /usr/bin/chmod 664 /etc/default/lp
  441. /usr/bin/chown lp /etc/default/lp
  442. /usr/bin/chgrp lp /etc/default/lp 
  443. installf ${PKGINST} /etc/default/lp v 0664 lp lp
  444.  
  445. # Upgrade/Overlay case
  446. # postinstall - must be executed after the driver files have been copied from
  447. # the distribution media.
  448. #
  449. # Copy the files that have been installed into the /etc/conf tree
  450. # by the installation scripts so that they can be installed into the
  451. # system via idtools.
  452. #
  453. # NOTE: Header files should have been copied by the install.
  454. #
  455. [ "$PKGINSTALL_TYPE" != "NEWINSTALL" ] && {
  456. PATH=${PATH}:/etc/conf/bin
  457. MFPD_DIR=/etc/inst/up/mfpdlp/mfpd
  458. LP_DIR=/etc/inst/up/mfpdlp/lp
  459.  
  460. # Move the files for the mfpd driver
  461. mv /etc/conf/pack.d/mfpd/Driver.o     $MFPD_DIR/Driver.o    >/dev/null 2>&1
  462. mv /etc/conf/pack.d/mfpd/Driver_atup.o     $MFPD_DIR/Driver_atup.o    >/dev/null 2>&1
  463. mv /etc/conf/pack.d/mfpd/Driver_mp.o     $MFPD_DIR/Driver_mp.o    >/dev/null 2>&1
  464. mv /etc/conf/pack.d/mfpd/space.c     $MFPD_DIR/Space.c    >/dev/null 2>&1
  465. mv /etc/conf/drvmap.d/mfpd         $MFPD_DIR/Drvmap    >/dev/null 2>&1
  466. mv /etc/conf/mdevice.d/mfpd         $MFPD_DIR/Master    >/dev/null 2>&1
  467. mv /etc/conf/sdevice.d/mfpd         $MFPD_DIR/System    >/dev/null 2>&1
  468. mv /etc/conf/node.d/mfpd         $MFPD_DIR/Node        >/dev/null 2>&1
  469.  
  470. # Move the files for the lp driver
  471. mv /etc/conf/pack.d/lp/Driver.o     $LP_DIR/Driver.o    >/dev/null 2>&1
  472. mv /etc/conf/pack.d/lp/Driver_atup.o     $LP_DIR/Driver_atup.o    >/dev/null 2>&1
  473. mv /etc/conf/pack.d/lp/Driver_mp.o     $LP_DIR/Driver_mp.o    >/dev/null 2>&1
  474. mv /etc/conf/mdevice.d/lp         $LP_DIR/Master        >/dev/null 2>&1
  475. mv /etc/conf/sdevice.d/lp         $LP_DIR/System        >/dev/null 2>&1
  476. mv /etc/conf/node.d/lp             $LP_DIR/Node        >/dev/null 2>&1
  477.  
  478. cd $MFPD_DIR
  479. if [ -f ./System.mfpd.save ]
  480. then
  481.     # Replace the System file from the package with the saved one
  482.     cp ./System.mfpd.save ./System
  483.     rm -f ./System.mfpd.save
  484. else
  485.     # There was no previous mfpd System file to use, so use the one from
  486.     # a previous lp if it is available. If not available, then enable
  487.     # the first default entry that does not have a HW conflict.
  488.     if [ -f ./System.lp.save ]
  489.     then
  490.         # Update the mfpd System file with the HW config from the
  491.         # old lp driver.
  492.         grep -v "^mfpd" System > System.tmp
  493.  
  494.         # Change the name of each entry to mfpd and raise its
  495.         # ipl to 5
  496.         grep "^lp" ./System.lp.save | awk '{ \
  497.         printf("mfpd\t%s\t%s\t5\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", \
  498.             $2, $3, $5, $6, $7, $8, $9, $10, $11, $12) \
  499.             }' >> System.tmp
  500.         mv System.tmp System
  501.  
  502.         # Enable the lp driver
  503.         grep "^lp" ./System.lp.save | read aa conf_field bb
  504.         [ "$conf_field" = "Y" ] && {
  505.             sed -e 's/N/Y/' $LP_DIR/System > $LP_DIR/System.tmp
  506.             mv $LP_DIR/System.tmp $LP_DIR/System
  507.         }
  508.     fi
  509. fi
  510.  
  511. idinstall -d mfpd >/dev/null 2>&1
  512. idinstall -a mfpd
  513.  
  514. cd $LP_DIR
  515.  
  516. idinstall -d lp >/dev/null 2>&1
  517. idinstall -a lp
  518. }
  519.  
  520. ### End of Upgrade/Overlay of lp and mfpd drivers
  521.  
  522.  
  523. ### end of LP portion of postinstall
  524.  
  525. # Run hbacompat to determine whether SVR4.2 drivers are installed
  526. # in the current kernel. hbacompat does this by getting the value of 
  527. # the symbol:      sdi_phystokv_hbacnt
  528. # Remove hbacompat after execution.
  529.  
  530. /tmp/hbacompat
  531. [ $? -ge 1 ] && {
  532.     /etc/conf/bin/idtune -f PHYSTOKVMEM    1 >/dev/null 2>&1
  533. }
  534. rm /tmp/hbacompat
  535. removef ${PKGINST} /tmp/hbacompat
  536.  
  537.  
  538. # Now, make sure root fs is not loadable and others are
  539.  
  540. SDEVICE=/etc/conf/sdevice.d
  541. read ROOTFS < /etc/.fstype
  542. case $ROOTFS in
  543. ufs) sed '/$version/a\
  544. $static' $SDEVICE/ufs > /tmp/ufs;
  545.      sed '/$version/a\
  546. $static' $SDEVICE/sfs > /tmp/sfs;
  547.      mv /tmp/ufs $SDEVICE/ufs;
  548.      mv /tmp/sfs $SDEVICE/sfs;
  549.      chmod 644  $SDEVICE/ufs $SDEVICE/sfs;
  550.      chgrp sys  $SDEVICE/ufs $SDEVICE/sfs;
  551.      chown root $SDEVICE/ufs $SDEVICE/sfs;;
  552. *) sed '/$version/a\
  553. $static' $SDEVICE/$ROOTFS > /tmp/$ROOTFS;
  554.    mv /tmp/$ROOTFS $SDEVICE/$ROOTFS;
  555.    chmod 644  $SDEVICE/$ROOTFS;
  556.    chgrp sys  $SDEVICE/$ROOTFS;
  557.    chown root $SDEVICE/$ROOTFS;;
  558. esac
  559.  
  560. # Some file sustems depend on DOW 
  561. case $ROOTFS in
  562. sfs|ufs)
  563.      sed '/$version/a\
  564. $static' $SDEVICE/dow > /tmp/dow;
  565.      mv /tmp/dow $SDEVICE/dow;
  566.      chmod 644  $SDEVICE/dow;
  567.      chgrp sys  $SDEVICE/dow;
  568.      chown root $SDEVICE/dow;;
  569. esac
  570.  
  571. # need this to configure multiple protocols for multiple boards. 
  572.  
  573. > /etc/confnet.d/netdrivers
  574. installf ${PKGINST} /etc/confnet.d/netdrivers v 0644  root sys 
  575.  
  576. ############### Begin UPGRADE AND OVERLAY #################
  577.  
  578. # Potential problem: 3 premature exits before we get here !!
  579.  
  580. ETCINST=/etc/inst
  581. UPINSTALL=$ETCINST/up
  582. SBINPKGINST=/usr/sbin/pkginst
  583. UPGRADE_STORE=/etc/inst/save.user
  584. UP_MSGS=$ETCINST/locale/C/menus/upgrade
  585.  
  586. UPDEBUG_SCRIPT=$SBINPKGINST/updebug
  587.  
  588. #
  589. # For all other scripts, I can edit updebug to turn debugging
  590. # on when I need it.  The postinstall script is a special case,
  591. # since it will be executed right after installing a verison of
  592. # /usr/sbin/pkginst/updebug with debugging off, but before I can
  593. # make the edit. So, I'm giving myself a little back door to
  594. # still allow debugging this script.
  595. #
  596.  
  597. [ -f $UPINSTALL/updebug.sh ] && UPDEBUG_SCRIPT=$UPINSTALL/updebug.sh
  598.  
  599. . $UPDEBUG_SCRIPT
  600.  
  601. [ "$PKGINSTALL_TYPE" != "NEWINSTALL" ] && {
  602.  
  603.     # Restore Version 4 ip Master file if it was saved.
  604.  
  605.     [ -f /etc/conf/mdevice.d/ip.v4 ] &&
  606.         mv -f /etc/conf/mdevice.d/ip.v4 /etc/conf/mdevice.d/ip
  607.  
  608.     # Do special stuff for "merge"
  609.  
  610.     [ -f /etc/conf/mdevice.d/merge.save ] && {
  611.  
  612.         mv -f /etc/conf/mdevice.d/merge.save /etc/conf/mdevice.d/merge
  613.         turnon dosx
  614.         chmod 644 /etc/conf/sdevice.d/dosx
  615.     }
  616.  
  617.     [ "$UPDEBUG" = "YES" ] && set -x
  618.  
  619.     #
  620.     #  Make sure we replace the stashed backup and restore commands.
  621.     #    1) 4.2 bkrs version replaced, else
  622.     #    2) V4 OA&M version replaced, else
  623.     #    3) base package version already replaced above.
  624.     #
  625.     [ "${UPDEBUG}" = "YES" ] && set -x && goany
  626.     if [ -f /usr/bin/.backup.4.2 ]
  627.     then
  628.         ln /usr/bin/.backup.4.2 /usr/bin/backup 2> /dev/null
  629.         installf ${PKGINST} /usr/bin/.backup.4.2 
  630.         ln /usr/bin/.restore.4.2 /usr/bin/restore 2> /dev/null
  631.         installf ${PKGINST} /usr/bin/.restore.4.2
  632.     else
  633.         [ -f /usr/bin/.backup.V4 -o -f /usr/sbin/.restore.V4 -o -f /sbin/.restore.V4 ] && {
  634.             ln /usr/bin/.backup.V4 /usr/bin/backup 2> /dev/null
  635.             installf ${PKGINST} /usr/bin/.backup.V4
  636.             ln /usr/sbin/.restore.V4 /usr/sbin/restore 2> /dev/null
  637.             installf ${PKGINST} /usr/sbin/.restore.V4
  638.             ln /sbin/.restore.V4 /sbin/restore 2> /dev/null
  639.             installf ${PKGINST} /sbin/.restore.V4
  640.         }
  641.     fi
  642.  
  643.     [ "${UPDEBUG}" = "YES" ] && goany
  644.  
  645.     #
  646.     #  We also need to replace any of the config files for the SAC
  647.     #  that we stashed away in the request script.
  648.     #
  649.     DBFCONV=/usr/lib/saf/dbfconv
  650.  
  651.     # For UPGRADE, UPGRADE2 and OVERLAY cases
  652.     SAVE=${UPGRADE_STORE}
  653.  
  654.     TAB='    '
  655.     SPACE=' '
  656.  
  657.     #
  658.     #  Lastly, 'kick' the sac for every service in the _sactab
  659.     #  so that the new file is read and acted on.
  660.     #
  661.     SACLIST=`cut -d ':' -f 1 < /etc/saf/_sactab | \
  662.         grep -v "[${SPACE}${TAB}]*#"`
  663.  
  664.     for SVC in ${SACLIST}
  665.     do
  666.         sacadm -x -p ${SVC} 2>>${UPERR}
  667.     done
  668.             
  669.  
  670.     [ "$AUTOMERGE" != "NULL" ] && {
  671.  
  672.         [ "$PKGINSTALL_TYPE" = "UPGRADE" ] && {
  673.  
  674.             #
  675.             # We need to do this here, because we don't go
  676.             # through the generic scripts that would have
  677.             # created a base.sav file when the installation
  678.             # is an upgrade of Version 4.
  679.             #
  680.  
  681.             cp $UPINSTALL/patch/base.LIST $UPGRADE_STORE/base.sav
  682.  
  683.             #
  684.             # Another UPGRADE specific thing we have to do is
  685.             # remove the "nobody" login from the saved Version 4
  686.             # passwd file before we merge volatile files.  We
  687.             # need to do this because in v4, "nobody" was added
  688.             # by the inet package, and in SVR4.2, it's in the
  689.             # base passwd file.  Since in v4 it could be added
  690.             # after many other logins had been added, our generic
  691.             # merge tool could NOT guarantee to correctly delete
  692.             # the this login.  Since passwd is such a critical
  693.             # file, we thought it best to special case it here
  694.             # to guarantee it ends up in a sane condition.
  695.             #
  696.  
  697.             cp $UPGRADE_STORE/etc/passwd /tmp/passwd.$$
  698.             grep -v "^nobody:" /tmp/passwd.$$ \
  699.                     > $UPGRADE_STORE/etc/passwd
  700.         }
  701.  
  702.         #
  703.         # We need to add boot.LIST to our file because those
  704.         # files are not reflected in our base.sav file and
  705.         # they do require merging.
  706.         #
  707.  
  708.         cat $ETCINST/scripts/boot.LIST >>$UPGRADE_STORE/base.sav
  709.  
  710.         ed $UPGRADE_STORE/base.sav <<- EOF >>$UPERR 2>&1
  711.             ?var/sadm/install/contents
  712.             d
  713.             w
  714.             q
  715.             EOF
  716.  
  717.         [ "$UPDEBUG" = "YES" ] && goany && set +x
  718.  
  719.         $SBINPKGINST/pkgmrgconf "base" "$AUTOMERGE" "Base System"
  720.  
  721.         [ "$UPDEBUG" = "YES" ] && set -x
  722.  
  723.         [ "$PKGINSTALL_TYPE" = "UPGRADE" ] && {
  724.  
  725.             #
  726.             # Now I need to clean up /etc/shadow.  Due to the
  727.             # changing nature of the encrypted passwd field,
  728.             # our generic merge tool cannot purge obsolete
  729.             # entries.
  730.             #
  731.  
  732.             OIFS=$IFS
  733.             IFS=" "
  734.  
  735.             rm -f /tmp/shadow.$$
  736.  
  737.             while read LINE
  738.             do
  739.                 #
  740.                 # I need set IFS=: to get the set to work
  741.                 # correctly and then I have to reset IFS
  742.                 # so the echo will put the correct line
  743.                 # in the shadow file.  If I don't reset
  744.                 # IFS everytime, the the echo LINE will
  745.                 # lack all the :'s.
  746.                 #
  747.  
  748.                 IFS=:
  749.                 set $LINE
  750.                 IFS=" "
  751.                 
  752.                 grep "^${1}:" /etc/passwd >/dev/null 2>&1
  753.  
  754.                 [ $? = 0 ] && echo $LINE >>/tmp/shadow.$$
  755.  
  756.                 [ "$UPDEBUG" = "YES" ] && goany
  757.  
  758.             done </etc/shadow
  759.  
  760.             # I'm doing a cp to preserve owner and group
  761.  
  762.             chmod 666 /etc/shadow
  763.             cp /tmp/shadow.$$ /etc/shadow
  764.             chmod 400 /etc/shadow
  765.             rm /tmp/shadow.$$
  766.  
  767.             /usr/sbin/pwconv
  768.             /sbin/creatiadb
  769.  
  770.             IFS=$OIFS
  771.  
  772.             #
  773.             # If it's NOT an UPGRADE, the upgrade specific files
  774.             # were never installed, so we only need to cleanup
  775.             # if we get to this section.
  776.             #
  777.  
  778.             $SBINPKGINST/up_cleanup base
  779.         }
  780.     }
  781.  
  782.     [ "$UPDEBUG" = "YES" ] && goany
  783.  
  784.     #
  785.     #    At this point, creatiadb needed to propogate the old 
  786.      #    passwd/shadow entries to M&I files for OVERLAY case. 
  787.     #
  788.  
  789.     [ "$PKGINSTALL_TYPE" = "OVERLAY" -o "$PKGINSTALL_TYPE" = "UPGRADE2" ] \
  790.         && /sbin/creatiadb
  791.  
  792.     #
  793.     # By removing /etc/scsi/pdi_edt, we're forcing pdimkdev to create
  794.     # new /dev nodes next time it's run.  There are two cases:
  795.     #
  796.     # 1) We're "overlaying" via the boot floppy installation process.
  797.     #
  798.     #    In this case, pdimkdev will run after the foundation set has
  799.     #    been installed, in the script that rebuilds the the kernel.
  800.     #    We need to do this, because we currently blow the original
  801.     #    /dev directory away and recreate it from scratch.  Then when
  802.     #    pdimkdev runs, it notices that the scsi configuration has not
  803.     #    changed by checking pdi_edt, and decides it would be a waste
  804.     #    of effort to recreate the nodes since the system configuration
  805.     #    has not changed since the last reboot.  This leads to
  806.     #    incorrect and missing /dev nodes.
  807.     #
  808.     #    An alternative that requires some more thought, would be to
  809.     #    leave the existing /dev in place for an overlay.  One problem
  810.     #    with this may be trouble trying to overlay from tape off the
  811.     #    boot floppies, since the boot floppies know what tape nodes
  812.     #    have just been created.
  813.     #
  814.     # 2) We're "overlaying" via pkgadd from the shell.
  815.     #
  816.     #    In this case, pdimkdev will run the next time the system is
  817.     #    rebooted.  Overlaying the base package without going through
  818.     #    the boot floppies will create new nodes, overwrite others and
  819.     #    leave other exisiting nodes alone.  By forcing pdimkdev to run
  820.     #    in this case will allow the removal of nodes that are not
  821.     #    required.
  822.     # 
  823.  
  824.     [ "$PKGINSTALL_TYPE" = "OVERLAY" -o "$PKGINSTALL_TYPE" = "UPGRADE2" ]\
  825.          && rm -f /etc/scsi/pdi_edt
  826.  
  827.     [ "$UPDEBUG" = "YES" ] && goany && set +x
  828. }
  829.  
  830. ################ End UPGRADE AND OVERLAY ##################
  831.  
  832. if [ -d /stand ]
  833. then
  834.     chmod 755 /stand
  835. fi
  836.  
  837. if [ ! -f /stand/unix ]
  838. then
  839.     touch /stand/unix
  840. fi
  841.  
  842. echo "Editing Package" > /usr/options/ed.name
  843. installf $PKGINST /usr/options/ed.name f 0644 root sys 1 NULL NULL
  844.  
  845. echo "Form and Menu Language Interpreter" > /usr/options/fmli.name
  846. installf $PKGINST /usr/options/fmli.name f 0644 root sys 1 NULL NULL
  847.  
  848. echo "Mouse Driver Package" > /usr/options/mouse.name
  849. installf $PKGINST /usr/options/mouse.name f 0644 root sys 1 NULL NULL
  850.  
  851. echo "Cartridge Tape Utilities" > /usr/options/qt.name
  852. installf $PKGINST /usr/options/qt.name f 0644 root sys 1 NULL NULL
  853.  
  854. echo "Termcap Compatibility Package" > /usr/options/termcap.name
  855. installf $PKGINST /usr/options/termcap.name f 0644 root sys 1 NULL NULL
  856.  
  857. # Set up the base locale files.
  858. cd /usr/lib/locale/C
  859. montbl montbl_C
  860. colltbl colltbl_C
  861. chrtbl chrtbl_C
  862. mkmsgs -o -i C time_C Xopen_info >/dev/null 2>&1 
  863.  
  864. installf ${PKGINST} /usr/lib/locale/C/LC_MONETARY f 444 root bin 1 NULL NULL
  865. installf ${PKGINST} /usr/lib/locale/C/LC_COLLATE f 444 root bin 1 NULL NULL
  866. installf ${PKGINST} /usr/lib/locale/C/LC_CTYPE f 444 root bin 1 NULL NULL
  867. installf ${PKGINST} /usr/lib/locale/C/LC_NUMERIC f 444 root bin 1 NULL NULL
  868. installf ${PKGINST} /usr/lib/locale/C/LC_MESSAGES/Xopen_info f 444 root bin 1 NULL NULL
  869.  
  870. cd /usr/lib/locale/POSIX
  871. montbl montbl_POSIX
  872. colltbl colltbl_POSIX
  873. chrtbl chrtbl_POSIX
  874. mkmsgs -o -i POSIX time_POSIX Xopen_info >/dev/null 2>&1 
  875.  
  876. installf ${PKGINST} /usr/lib/locale/POSIX/LC_MONETARY f 444 root bin 1 NULL NULL
  877. installf ${PKGINST} /usr/lib/locale/POSIX/LC_COLLATE f 444 root bin 1 NULL NULL
  878. installf ${PKGINST} /usr/lib/locale/POSIX/LC_CTYPE f 444 root bin 1 NULL NULL
  879. installf ${PKGINST} /usr/lib/locale/POSIX/LC_NUMERIC f 444 root bin 1 NULL NULL
  880. installf ${PKGINST} /usr/lib/locale/POSIX/LC_MESSAGES/Xopen_info f 444 root bin 1 NULL NULL
  881.  
  882. # Add marker file to user directory skeleton so that all newly created
  883. # users are considered upgraded.  Done here instead of through prototype
  884. # file so that can use uname -v and not have to update manually every release
  885. > /etc/skel/.UpgradeVer`uname -v`
  886. installf $PKGINST /etc/skel/.UpgradeVer`uname -v` f 0644 root sys 1 NULL NULL
  887.  
  888. installf -f ${PKGINST} 
  889.  
  890. ############################################
  891. #
  892. #The following defines the users for the TFM database.
  893. #
  894. #
  895. for user in root bin sys adm     lp
  896. do
  897.     adminuser $user >/dev/null 2>&1 || adminuser -n $user
  898. done
  899. #
  900. #The following while-loop reads the commands and the users
  901. #to which these commands are to be assigned.  If privileges, 
  902. #separated by a colon, appear next to the user in the script that 
  903. #this while-loop reads in, it means that those privileges are to
  904. #be shutoff for that command when it is assigned to the user.
  905. #
  906. #
  907. while read cmd users
  908. do
  909.     base=`basename $cmd`
  910.     privs=`
  911.     egrep ":${cmd}$" /etc/security/tcb/privs|# Find command in tcb database
  912.     sed 's/^.*%inher,\(.*\):.*/\1/p' |       # get the set of inher privs
  913.     sed 's/^.*%fixed,\(.*\):.*//p' |         # delete the fixed privs
  914.     sed 's/,/:/gp'                           # changed ,'s to :'s
  915.     `
  916.     if [ -z "$privs" ]
  917.     then
  918.     echo $cmd $users >> /tmp/userlist
  919.     continue
  920.     else
  921.         prvd="yes"
  922.     fi
  923.     set $users
  924.     save="$privs"
  925.     while [ $# -gt 0 ]
  926.     do
  927.         user=$1
  928.         if echo "$1" | grep ":" > /dev/null
  929.         then
  930.             user=`
  931.             echo "$1" | sed 's/:.*$//p'`
  932.             if [ "$prvd" = "yes" ]
  933.             then
  934.                 shutoff=`
  935.                 echo "$1" | sed 's/[a-z]*:\(.*\)$/\1/p'`
  936.                 shutoff=`echo "$shutoff"|sed 's/:/ /gp'`
  937.                 fullset=`echo "$save"|sed 's/:/ /gp'`
  938.                 for i in $shutoff    #check if privileges to be shut off
  939.                 do                   #are in full set of privilges
  940.                     found="false"
  941.                     for j in $fullset
  942.                     do
  943.                         if [ "$i" = "$j" ]
  944.                         then
  945.                             found="true"
  946.                             break
  947.                         fi
  948.                     done
  949.                     privs=""
  950.                     if [ "$found" = "false" ]
  951.                     then
  952.                         echo "Warning: \c"
  953.                         echo "$i privilege specified to be shut off for $cmd,"
  954.                         echo "         but it is NOT in its set of privileges."
  955.                         break
  956.                     fi
  957.                 done
  958.                 if [ -z "$shutoff" ]
  959.                 then
  960.                     privs="$save"
  961.                 else
  962.                     for i in $fullset
  963.                     do
  964.                         found="false"
  965.                         for j in $shutoff
  966.                         do
  967.                             if [ "$i" = "$j" ]
  968.                             then
  969.                                 found="true"
  970.                                 break
  971.                             fi
  972.                         done
  973.                         if [ "$found" = "false" ]
  974.                         then
  975.                             if [ -z "$privs" ]
  976.                             then
  977.                                 privs=$i
  978.                             else
  979.                                 privs=$privs:$i
  980.                             fi
  981.                         fi
  982.                     done
  983.                 fi
  984.             fi
  985.         else
  986.             privs="$save"
  987.         fi
  988.         if [ -z "$privs" ]
  989.         then
  990.             adminuser -a $base:$cmd $user
  991.         else
  992.             adminuser -a $base:$cmd:$privs $user
  993.         fi
  994.         shift
  995.     done
  996. done <<!
  997. /usr/bin/ps    root
  998. /sbin/metreg    sys
  999. !
  1000.  
  1001. #
  1002. #The following defines the roles for the TFM database.
  1003. #
  1004. #
  1005. for role in AUD OP SOP SSO
  1006. do
  1007.         test -d /etc/security/tfm/roles/$role && adminrole -d $role
  1008.         adminrole -n $role
  1009. done
  1010.  
  1011.  
  1012. #The following while-loop reads the commands and the roles
  1013. #to which these commands are to be assigned.  If privileges, 
  1014. #separated by a colon, appear next to the role in the script that 
  1015. #this while-loop reads in, it means that those privileges are to
  1016. #be shutoff for that command when it is assigned to the role.
  1017.  
  1018. while read cmd roles
  1019. do
  1020.     echo $cmd | egrep "^#" > /dev/null 2>&1 && continue    # Skip comments
  1021.     base=`basename $cmd`
  1022.     privs=`
  1023.     egrep ":${cmd}$" /etc/security/tcb/privs|    # Find command in tcb database
  1024.     sed 's/^.*%inher,\(.*\):.*/\1/p' |          # get the set of inher privs
  1025.     sed 's/^.*%fixed,\(.*\):.*//p' |             # delete the fixed privs
  1026.     sed 's/,/:/gp'                              # changed ,'s to :'s
  1027.     `
  1028.     if [ -z "$privs" ]
  1029.     then
  1030.     echo $cmd $roles >> /tmp/rolelist
  1031.     continue
  1032.     else
  1033.         prvd="yes"
  1034.     fi
  1035.     set $roles
  1036.     save="$privs"
  1037.     while [ $# -gt 0 ]
  1038.     do
  1039.         role=$1
  1040.         if echo "$1" | grep ":" > /dev/null
  1041.         then
  1042.             role=`
  1043.             echo "$1" | sed 's/:.*$//p'`
  1044.             if [ "$prvd" = "yes" ]
  1045.             then
  1046.                 shutoff=`
  1047.                 echo "$1" | sed 's/^[A-Z]*://p'`
  1048.                 shutoff=`echo "$shutoff"|sed 's/:/ /gp'`
  1049.                 fullset=`echo "$save"|sed 's/:/ /gp'`
  1050.                 for i in $shutoff    #check if privileges to be shut off
  1051.                 do                    #are in full set of privilges
  1052.                     found="false"
  1053.                     for j in $fullset
  1054.                     do
  1055.                         if [ "$i" = "$j" ]
  1056.                         then
  1057.                             found="true"
  1058.                             break
  1059.                         fi
  1060.                     done
  1061.                     privs=""
  1062.                     if [ "$found" = "false" ]
  1063.                     then
  1064.                         echo "Warning: \c"
  1065.                         echo "$i privilege specified to be shut off for $cmd,"
  1066.                         echo "         but it is NOT in its set of privileges."
  1067.                         break
  1068.                     fi
  1069.                 done
  1070.                 if [ -z "$shutoff" ]
  1071.                 then
  1072.                     privs="$save"
  1073.                 else
  1074.                     for i in $fullset
  1075.                     do
  1076.                         found="false"
  1077.                         for j in $shutoff
  1078.                         do
  1079.                             if [ "$i" = "$j" ]
  1080.                             then
  1081.                                 found="true"
  1082.                                 break
  1083.                             fi
  1084.                         done
  1085.                         if [ "$found" = "false" ]
  1086.                         then
  1087.                             if [ -z "$privs" ]
  1088.                             then
  1089.                                 privs=$i
  1090.                             else
  1091.                                 privs=$privs:$i
  1092.                             fi
  1093.                         fi
  1094.                     done
  1095.                 fi
  1096.             fi
  1097.         else
  1098.             privs="$save"
  1099.         fi
  1100.         if [ -z "$privs" ]
  1101.         then
  1102.             adminrole -a $base:$cmd $role
  1103.         else
  1104.             adminrole -a $base:$cmd:$privs $role
  1105.         fi
  1106.         shift
  1107.     done
  1108. done <<!
  1109. /sbin/df    OP    SOP    SSO
  1110. /sbin/fsck    OP    SOP    SSO
  1111. /sbin/init    SOP    SSO
  1112. /sbin/mknod    SOP    SSO
  1113. /sbin/mount    SOP    SSO
  1114. /sbin/putdev    SSO
  1115. /sbin/umount    SOP    SSO
  1116. /usr/bin/cancel        SOP    SSO
  1117. /usr/bin/cat    SSO
  1118. /usr/bin/chgrp    SSO
  1119. /usr/bin/chmod    SSO
  1120. /usr/bin/chown    SSO
  1121. /usr/bin/cp    SSO
  1122. /usr/bin/cpio    SOP:dacwrite:macwrite    SSO
  1123. /usr/bin/crontab    SOP    SSO
  1124. /usr/bin/date    SSO
  1125. /usr/bin/defadm    SSO
  1126. /usr/bin/devattr    SOP    SSO
  1127. /usr/bin/disable    SOP    SSO
  1128. /usr/bin/du    SOP    SSO
  1129. /usr/bin/enable        SOP    SSO
  1130. /usr/bin/find    SOP    SSO
  1131. /usr/bin/ipcrm    SSO
  1132. /usr/bin/ipcs    SSO
  1133. /usr/bin/kill    SOP    SSO
  1134. /usr/bin/ln    SSO
  1135. /usr/bin/lp            SSO
  1136. /usr/bin/ls    SOP    SSO
  1137. /usr/bin/mkdir    OP    SOP    SSO
  1138. /usr/bin/mv    SSO
  1139. /usr/bin/passwd    SSO
  1140. /usr/bin/priocntl    SSO
  1141. /usr/bin/ps    SOP    SSO
  1142. /usr/bin/rm    SSO
  1143. /usr/lib/lp/lpsched    OP    SOP    SSO
  1144. /usr/lib/saf/sac    SSO
  1145. /usr/lib/saf/ttymon    SSO
  1146. /usr/sbin/cron    SSO
  1147. /usr/sbin/dispadmin    SSO
  1148. /usr/sbin/fuser    SOP    SSO
  1149. /usr/sbin/groupadd    SSO
  1150. /usr/sbin/groupdel    SSO
  1151. /usr/sbin/groupmod    SSO
  1152. /usr/sbin/lpadmin    SOP    SSO
  1153. /usr/sbin/lpshut    SOP    SSO
  1154. /usr/sbin/pmadm    SOP    SSO
  1155. /usr/sbin/prtconf    OP    SOP    SSO
  1156. /usr/sbin/sacadm    SOP    SSO
  1157. /usr/sbin/shutdown    SOP    SSO
  1158. /usr/sbin/ttyadm    SSO
  1159. /usr/sbin/useradd    SSO
  1160. /usr/sbin/userdel    SSO
  1161. /usr/sbin/usermod    SSO
  1162. /usr/sbin/wall    OP    SOP    SSO
  1163. !
  1164.  
  1165. # mail goes here KMH if needed
  1166. (cd /etc/mail; ./newaliases)
  1167.  
  1168. #
  1169. # Remove files in contents database.
  1170. #
  1171. # /dev/console, /dev/syscon, /dev/systty - pkgchk will always complain because
  1172. # the owner changes depending on who logs in.
  1173.  
  1174. removef ${PKGINST} /dev/console
  1175. removef ${PKGINST} /dev/syscon
  1176. removef ${PKGINST} /dev/systty
  1177.  
  1178. removef -f ${PKGINST}
  1179.  
  1180. #
  1181. # basic backup links, done here so that extended backup
  1182. # pkg can adjust.
  1183. # Only do this if we're not replacing backup and restore
  1184. # commands from 4.2 bkrs or V4 OA&M...
  1185. # Before creating the link, check that it does not exist
  1186. #
  1187. [ ! -f /usr/bin/.backup.4.2 -a ! -f /usr/bin/.backup.V4 ] && {
  1188.     [ -f /usr/bin/backup   ] || ln /usr/bin/.backup /usr/bin/backup
  1189.     [ -f /usr/bin/restore  ] || ln /usr/bin/.restore /usr/bin/restore
  1190.     [ -f /usr/sbin/backup  ] || ln /usr/sbin/.backup /usr/sbin/backup
  1191.     [ -f /usr/sbin/restore ] || ln /usr/sbin/.restore /usr/sbin/restore
  1192.     cp /usr/bin/restore /sbin/restore
  1193. }
  1194.  
  1195. [ "$PKGINSTALL_TYPE" = "UPGRADE" ] && {
  1196.  
  1197.     #
  1198.     # Let's talk "kludge" -- I don't like them either,
  1199.     # but what can I say, I even used a "goto" once.
  1200.     #
  1201.     # An upgrade produces a pile of WARNING messages
  1202.     # that are really NO problem.  We could just let
  1203.     # them stay in the log file, but if a real problem
  1204.     # occurs and the user is directed to the log, all
  1205.     # these WARNINGS could overwhelm a naive user and
  1206.     # they may not see what the REAL problem is.
  1207.     #
  1208.  
  1209.     LOGS=/var/sadm/install/logs
  1210.  
  1211.     [ -f $LOGS/$PKGINST.log ] && {
  1212.  
  1213.         cat $LOGS/$PKGINST.log |
  1214.         grep -v "^WARNING: /usr/share/lib/terminfo/" > $LOGS/$PKGINST.nlog
  1215.  
  1216.         mv -f $LOGS/$PKGINST.nlog $LOGS/$PKGINST.log
  1217.     }
  1218. }
  1219.  
  1220. if [ -f /etc/inst/scripts/postreboot.sh ]
  1221. then
  1222.  
  1223.     serialid=`grep "^SerialID=" /isl/ifile`
  1224.     eval $serialid
  1225.     actkey=`grep "^ActKey=" /isl/ifile`
  1226.     eval $actkey
  1227.     licdata=`grep "^LicenseData=" /isl/ifile`
  1228.     eval $licdata
  1229.  
  1230.     if [ -z "$SerialID" ]
  1231.     then
  1232.         SerialID="UW7EVAL60"
  1233.         ActKey="ixazkcpi"
  1234.         LicenseData="d60;maz1g4b"
  1235.     fi
  1236.  
  1237.     if [ -z "$LicenseData" ]
  1238.     then
  1239.         /usr/sbin/brand -g $SerialID $ActKey
  1240.     else
  1241.         /usr/sbin/brand -g -a "$LicenseData" $SerialID $ActKey
  1242.     fi
  1243.  
  1244.     /etc/ifor_pmd -k
  1245. fi
  1246.  
  1247. exit $errflg
  1248.