i.minorperm_sparc revision 5c1d0199d69216ebefa9ed86940778f6d215a97f
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# CDDL HEADER START
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# The contents of this file are subject to the terms of the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Common Development and Distribution License (the "License").
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# You may not use this file except in compliance with the License.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# See the License for the specific language governing permissions
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# and limitations under the License.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# When distributing Covered Code, include this CDDL HEADER in each
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# If applicable, add the following below this CDDL HEADER, with the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# fields enclosed by brackets "[]" replaced with your own identifying
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk# information: Portions Copyright [yyyy] [name of copyright owner]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# CDDL HEADER END
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Use is subject to license terms.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# ident "%Z%%M% %I% %E% SMI"
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# NOTE: When a change is made to the source file for
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# /etc/minor_perm, a corresponding change must be made to
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# this class-action script.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# - If an existing entry in minor_perm is having its
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# attributes e.g. permissions, ownership changed,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# add it to the list produced by make_chattr_list below.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# - If an existing entry must be deleted, add it to
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# the list produced by make_delete_list below.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# - If a new entry must be added to the file, add it to the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# list produced by make_add_list.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# - If a new entry is being added to minor_perm, but there
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# may already be devices of that name on the system (e.g.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# we used the system default permissions in a previous release),
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# and those old devices now need to have their attributes changed,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# add it to the make_chattr_list AND the make_add_list lists
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# If an entry in /etc/minor_perm needs to have its attributes
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# changed, identify the entry in the list copied to /etc/chattr.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# by this function. The fields are:
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# <device>:<minor> <old_attrs> <new_attrs> <optional list of logical
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# devices whose attributes
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# will need to be changed>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# where an <attribute list> := <perm> <user> <group>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkaudio:* 0666 root sys 0600 root sys /dev/sound/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvol:volctl 0600 root sys 0666 root sys /dev/volctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksad:user 0600 root sys 0666 root sys /dev/sad/user
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:* 0666 root sys 0600 uucp uucp /dev/cua/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkzs:* 0666 root sys 0600 uucp uucp /dev/cua/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksu:* 0666 root sys 0600 uucp uucp /dev/cua/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkssd:* 0666 root sys 0640 root sys /dev/dsk/* /dev/rdsk/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdad:* 0600 root sys 0640 root sys /dev/dsk/* /dev/rdsk/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcpc:* 0600 root sys 0666 root sys /devices/pseudo/cpc*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenklog:conslog 0622 root sys 0666 root sys /dev/conslog
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksy:tty 0666 root sys 0666 root tty /dev/tty
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcvc:* 0666 root sys 0600 root sys
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcvcredir:* 0666 root sys 0600 root sys
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkssm:* 0600 root sys 0640 root sys /devices/ssm*:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkicmp:icmp 0600 root sys 0666 root sys /dev/rawip
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkicmp6:icmp6 0600 root sys 0666 root sys /dev/rawip6
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkip:ip 0660 root sys 0666 root sys /dev/ip
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkip6:ip6 0660 root sys 0666 root sys /dev/ip6
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrts:rts 0660 root sys 0666 root sys /dev/rts
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkkeysock:keysock 0600 root sys 0666 root sys /dev/keysock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipsecah:ipsecah 0600 root sys 0666 root sys /dev/ipsecah
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipsecesp:ipsecesp 0600 root sys 0666 root sys /dev/ipsecesp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkspdsock:spdsock 0600 root sys 0666 root sys /dev/spdsock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksad:admin 0600 root sys 0666 root sys /dev/sad/admin
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfssnap:ctl 0600 root sys 0666 root sys /dev/fssnapctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfssnap:* 0600 root sys 0640 root sys /dev/fssnap/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ce 0600 root sys 0666 root sys /dev/ce
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:eri 0600 root sys 0666 root sys /dev/eri
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ge 0600 root sys 0666 root sys /dev/ge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:hme 0600 root sys 0666 root sys /dev/hme
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:qfe 0600 root sys 0666 root sys /dev/qfe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:bge 0600 root sys 0666 root sys /dev/bge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:rge 0600 root sys 0666 root sys /dev/rge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:xge 0600 root sys 0666 root sys /dev/xge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:nge 0600 root sys 0666 root sys /dev/nge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:e1000g 0666 root root 0666 root sys /dev/e1000g
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:chxge 0600 root sys 0666 root sys /dev/chxge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:vsw 0600 root sys 0666 root sys /dev/vsw
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:vnet 0600 root sys 0666 root sys /dev/vnet
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:pcwl 0600 root sys 0666 root sys /dev/pcwl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:pcan 0600 root sys 0666 root sys /dev/pcan
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:afe 0600 root sys 0666 root sys /dev/afe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:mxfe 0600 root sys 0666 root sys /dev/mxfe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:rtls 0600 root sys 0666 root sys /dev/rtls
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkbge:* 0600 root sys 0666 root sys /dev/bge*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrge:* 0600 root sys 0666 root sys /dev/rge*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkxge:* 0600 root sys 0666 root sys /dev/xge*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenknge:* 0600 root sys 0666 root sys /dev/nge*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenke1000g:* 0666 root root 0666 root sys /dev/e1000g*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkchxge:* 0600 root sys 0666 root sys /dev/chxge*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvsw:* 0600 root sys 0666 root sys /dev/vsw*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvnet:* 0600 root sys 0666 root sys /dev/vnet*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcwl:* 0600 root sys 0666 root sys /dev/pcwl*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcan:* 0600 root sys 0666 root sys /dev/pcan*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:dmfe 0600 root sys 0666 root sys /dev/dmfe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdmfe:* 0600 root sys 0666 root sys /dev/dmfe*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:pcelx 0600 root sys 0666 root sys /dev/pcelx
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcelx:* 0600 root sys 0666 root sys /dev/pcelx*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkafe:* 0600 root sys 0666 root sys /dev/afe*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmxfe:* 0600 root sys 0666 root sys /dev/mxfe*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrtls:* 0600 root sys 0666 root sys /dev/rtls*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipf:* 0600 root sys 0666 root sys /dev/ipf
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpfil:* 0600 root sys 0666 root sys /dev/pfil
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkscsi_vhci:devctl 0600 root sys 0666 root sys /devices/scsi_vhci:devctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfbt:fbt 0600 root sys 0644 root sys /dev/dtrace/provider/fbt
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenklockstat:* 0600 root sys 0644 root sys /dev/dtrace/provider/lockstat
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkprofile:profile 0600 root sys 0644 root sys /dev/dtrace/provider/profile
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksdt:sdt 0600 root sys 0644 root sys /dev/dtrace/provider/sdt
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksystrace:systrace 0600 root sys 0644 root sys /dev/dtrace/provider/systrace
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# If an entry in /etc/minor_perm needs to be deleted, identify
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# the entry in the list copied to /etc/delete.$$ by this function.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# The fields are:
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# <device>:<minor> <optional list of logical devices to be deleted>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmm:mbio /dev/mbio /devices/pseudo/mm:mbio
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmm:mbmem /dev/mbmem /devices/pseudo/mm:mbmem
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:amd,0,aux,audio
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkconsfb:consfb
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ipsecah
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ipsecesp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:keysock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkprofile:profile
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# If an entry needs to be added to /etc/minor_perm, add the first
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# field of the entry to the list created by this function. The
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# remainder of the entry will be extracted from the /etc/minor_perm
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# in the package being installed, so it is not necessary to supply
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcat > /tmp/add.$$ << EOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,fas:devctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdevinfo:devinfo
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:[0-7],hdlc
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksysmsg:msglog
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksysmsg:sysmsg
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipsecah:ipsecah
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipsecesp:ipsecesp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkkeysock:keysock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkspdsock:spdsock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdevinfo:devinfo,ro
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcryptoadm:cryptoadm
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcrypto:crypto
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfasttrap:fasttrap
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkprofile:profile
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksystrace:systrace
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkPATH="/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin"
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Internal routine to create a sed script which can be used to
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# escape all shell globbing metacharacters in a path.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Internal routine to convert an entry in a /tmp/chwhatever.$$ file to
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# an appropriately escaped pattern which can be used to grep into minor_perm.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # the first argument is the 'key' field from the change file.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # entries can contain shell globbing characters to match
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # several devices - hence all the palaver below.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # the remaining optional arguments are tokens separated by white-space
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $# = 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ ! -f $dest ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Process the list of devices whose attributes are to be
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # changed. Find those that actually need to be
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # applied to the file. For each change that needs
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # to be applied, add an entry for it to the sed
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # script that will eventually be applied to the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # currently-installed /etc/minor_perm file. Also,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # add an entry to the /tmp/chdevs.$$ file, which
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # contains the list of logical names of devices
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # whose permissions need to be changed.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk while read key oldp oldu oldg newp newu newg chdevs
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # First determine whether the device entry
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # is already in the file, but with the old
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # permissions. If so, the entry needs to be
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # modified and the devices in the chdevs list
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # need to have their permissions and ownerships
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grepstr=`entry2pattern "${key}" $oldp $oldu $oldg`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo "s/${grepstr}/$key $newp $newu $newg/" \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Now determine whether the device entry is
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # in the file at all. If not, it is a new
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # entry, but there may already be devices
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # on the system whose permissions need to
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # be changed.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? != 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $do_chdevs = yes -a "$chdevs" != "" ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Make sure /dev/volctl gets its permissions corrected.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # (systems upgraded from 2.2 to 2.3 may have a correct
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # entry for /dev/volctl in the /etc/minor_perm file
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # but the actual /dev/volctl node may have the wrong
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # permissions.)
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo /dev/volctl 0600 root sys 0666 root sys >> /tmp/chdevs.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Process the list of devices to be deleted.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Find those that actually need to be deleted
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # from the file. For each entry to be deleted,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # add an entry for it to the sed script that will
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # eventually be applied to the currently-installed
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # /etc/minor_perm file. Also, add an entry to the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # /tmp/deldevs.$$ file, which contains the list of
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # logical names of devices to be deleted.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Apply the sed script built above to the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # currently-installed /etc/minor_perm file.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Special case code to handle bug in 2.1, 2.2, and
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # early 2.3 releases: the link from /dev/sound/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # has one extra set of "../"'s in the link. This
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # doesn't cause problems in normal operation
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # because ".."'s that would take the search path
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # higher than the real root are ignored. However,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # during upgrade, when the system being upgraded is
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # mounted at /a, the extra ".." in the link causes
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # the link to be unresolvable. The link must be
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # corrected so that the chmod of /dev/sound/*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ "$PKG_INSTALL_ROOT" != "" -a "$PKG_INSTALL_ROOT" != "/" ]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # if it's not a symlink, continue
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ ! -h $i ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? = 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # link is already OK
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # otherwise, link can't be followed
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # build the correct link
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # build a test link
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # test the link
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # it worked, so replace old link with new
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? = 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # For all entries in minor_perm whose attributes had
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # to be corrected, correct the relevant attributes of the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # already-existing devices that correspond to those
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/chdevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Note that we take pains -only- to change
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # the permission/ownership of devices that
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # have kept their original permissions.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # For all entries in minor_perm that were deleted,
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # remove the /dev entries that point to device nodes
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # that correspond to those entries.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/deldevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? != 0 ] ; then