i.minorperm_sparc revision 5c1d0199d69216ebefa9ed86940778f6d215a97f
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#! /bin/sh
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# CDDL HEADER START
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# or http://www.opensolaris.org/os/licensing.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# See the License for the specific language governing permissions
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# and limitations under the License.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# CDDL HEADER END
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# Use is subject to license terms.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# ident "%Z%%M% %I% %E% SMI"
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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#
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#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# - If an existing entry must be deleted, add it to
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# the list produced by make_delete_list below.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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#
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#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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#
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#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# where an <attribute list> := <perm> <user> <group>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmake_chattr_list() {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcat > /tmp/chattr.$$ << EOF
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.schenkEOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk# <device>:<minor> <optional list of logical devices to be deleted>
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmake_delete_list() {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcat > /tmp/delete.$$ << EOF
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.schenksw:drum
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrip:rawip
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkzs:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkconsfb:consfb
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkwin:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrtvc:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkgt:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmic:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcgeight-p4:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcgfour:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcgtwo:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkid:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkxd:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkxt:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkxy:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkie:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkbe:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:ucm
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:ucmctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:arp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:icmp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ip
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:tcp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:udp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:rts
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ipsecah
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ipsecesp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:keysock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:le
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksu:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkprofile:profile
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:qe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcgfourteen:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcgeight:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,sx:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksx_cmem:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstc:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdbri:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,DBRId:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,DBRIe:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,DBRIf:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkEOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
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.schenk# it here.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk#
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmake_add_list() {
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcat > /tmp/add.$$ << EOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:llc1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkstc:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmcpzsa:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmcpp:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvol:volctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktl:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktnf:tnfctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktnf:tnfmap
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkzs:[a-z]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkzs:[a-z],cu
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksad:user
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksu:[a-z]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksu:[a-z],cu
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksu:ssp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksu:sspctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfdthree:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkssd:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdad:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpm:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktod:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,pmc:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,mic:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkSUNW,fas:devctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcvc:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcvcredir:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdevinfo:devinfo
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenkenvctrltwo:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:[a-h]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:[a-h],cu
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:[0-7],hdlc
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:ssp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkse:sspctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:hme
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:eri
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkwc:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkarp:arp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkicmp:icmp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkicmp6:icmp6
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkip:ip
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkip6:ip6
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktcp:tcp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenktcp6:tcp6
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkudp:udp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkudp6:udp6
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrts:rts
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpoll:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpool:pool
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpool:poolctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcpc:shared
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksysmsg:msglog
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksysmsg:sysmsg
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipsecah:ipsecah
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipsecesp:ipsecesp
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkkeysock:keysock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkspdsock:spdsock
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdevinfo:devinfo,ro
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenklofi:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenklofi:ctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksgen:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfssnap:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfssnap:ctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcf8574:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcf8591:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkgpio_87317:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrsm:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrandom:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmm:allkmem
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkssm:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkbscv:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:bge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:rge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:xge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:nge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:e1000g
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:chxge
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:vsw
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:vnet
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:pcwl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:pcan
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:afe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:mxfe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:rtls
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkbge:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrge:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkxge:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenknge:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenke1000g:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkchxge:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvsw:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvnet:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcwl:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcan:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkafe:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmxfe:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkrtls:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:dmfe
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdmfe:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:pcelx
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpcelx:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkclone:ibd
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkibd:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksysevent:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkramdisk:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkramdisk:ctl
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcryptoadm:cryptoadm
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcrypto:crypto
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdtrace:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkfasttrap:fasttrap
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkipf:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkpfil:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkbl:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksctp:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksctp6:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkvni:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcpuid:self
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkntwdt:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdld:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkaggr:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkmdesc:*
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenkzfs:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkzfs:zfs
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkscsi_vhci:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkkssl:*
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenkfbt:fbt
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkprofile:profile
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksdt:sdt
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenksystrace:systrace
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkphysmem:*
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkEOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkPATH="/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin"
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkexport PATH
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
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
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcreate_esc_sedscript()
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkcat > /tmp/esc.sed.$$ << EOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenks/\*/\\\\*/g
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenks/\?/\\\\?/g
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenks/\[/\\\\[/g
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenks/\]/\\\\]/g
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkEOF
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
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
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkentry2pattern()
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk{
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
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk printf '%s' `echo "$1" | sed \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk -e 's/\*/\\\\*/g' -e 's/\?/\\\\?/g' \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk -e 's/\./\\\\./g' -e 's/\[/\\\\[/g' \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk -e 's/\]/\\\\]/g'`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk shift
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # the remaining optional arguments are tokens separated by white-space
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $# = 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk printf '[ \t]'
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk else
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk while [ -n "$1" ]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk printf '[ \t][ \t]*%s' $1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk shift
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk printf '[ \t]*$'
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk}
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkwhile read src dest
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdo
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ ! -f $dest ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cp $src $dest
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk else
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk rm -f /tmp/*.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk create_esc_sedscript
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk make_chattr_list
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk make_delete_list
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk make_add_list
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cat /tmp/chattr.$$ | \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk while read key oldp oldu oldg newp newu newg chdevs
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do_chdevs=no
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 # changed.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grepstr=`entry2pattern "${key}" $oldp $oldu $oldg`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if grep "$grepstr" $dest > /dev/null 2>&1; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo "s/${grepstr}/$key $newp $newu $newg/" \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk >> /tmp/sedscript.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do_chdevs=yes
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grepstr=`entry2pattern "${key}"`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grep "${grepstr}" $dest > /dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? != 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do_chdevs=yes
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $do_chdevs = yes -a "$chdevs" != "" ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk xchdevs=`echo "$chdevs" | \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk sed -f /tmp/esc.sed.$$`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk for m in $xchdevs ; do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo "$m" $oldp $oldu $oldg \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk $newp $newu $newg >> /tmp/chdevs.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo /dev/volctl 0600 root sys 0666 root sys >> /tmp/chdevs.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/chdevs.$$ ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk sort -u /tmp/chdevs.$$ > /tmp/tmp.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk mv /tmp/tmp.$$ /tmp/chdevs.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cat /tmp/delete.$$ | while read key deldevs
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk grepstr=`entry2pattern "${key}"`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if grep "$grepstr" $dest > /dev/null 2>&1; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo "/${grepstr}/d" >> /tmp/sedscript.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ "$deldevs" != "" ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk xdeldevs=`echo "$deldevs" | \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk sed -f /tmp/esc.sed.$$`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk for m in $xdeldevs ; do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk echo "$m" >> /tmp/deldevs.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/deldevs.$$ ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk sort -u /tmp/deldevs.$$ > /tmp/tmp.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk mv /tmp/tmp.$$ /tmp/deldevs.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # Apply the sed script built above to the
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # currently-installed /etc/minor_perm file.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/sedscript.$$ ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk sed -f /tmp/sedscript.$$ $dest > /tmp/tmp.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cp /tmp/tmp.$$ $dest
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 # works.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ "$PKG_INSTALL_ROOT" != "" -a "$PKG_INSTALL_ROOT" != "/" ]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk for i in $PKG_INSTALL_ROOT/dev/sound/* ; do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ "$i" = "$PKG_INSTALL_ROOT/dev/sound/*" ]
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk break;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # if it's not a symlink, continue
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ ! -h $i ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk continue
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ls -L $i >/dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? = 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # link is already OK
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk continue
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # otherwise, link can't be followed
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # build the correct link
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk link=`ls -l $i | sed 's,.* ,,'`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk link=`expr $link : '\.\.\/\(.*\)'`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ "$link" = "" ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk continue;
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # build a test link
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk rm -f $PKG_INSTALL_ROOT/dev/sound/test.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ln -s $link $PKG_INSTALL_ROOT/dev/sound/test.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # test the link
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ls -L $PKG_INSTALL_ROOT/dev/sound/test.$$ \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk >/dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk # it worked, so replace old link with new
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? = 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk rm -f $i
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk ln -s $link $i
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk rm -f $PKG_INSTALL_ROOT/dev/sound/test.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
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 # entries.
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/chdevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk "$PKG_INSTALL_ROOT" != "/" ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cat /tmp/chdevs.$$ |\
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk while read device oldp oldu oldg newp newu newg
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk for dev in $PKG_INSTALL_ROOT/$device; do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk find $dev -follow -perm $oldp -exec \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk chmod $newp $dev \; >/dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk find $dev -follow -user $oldu -exec \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk chown $newu $dev \; >/dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk find $dev -follow -group $oldg -exec \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk chgrp $newg $dev \; >/dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
dff2cc5646d4437ab9e0cb1dcb59da65462a5938jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk #
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 #
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ -s /tmp/deldevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk "$PKG_INSTALL_ROOT" != "/" ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cat /tmp/deldevs.$$ | while read device
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk rm -f $PKG_INSTALL_ROOT/$device
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk cat /tmp/add.$$ | while read key
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk do
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grepstr=`entry2pattern "${key}"`
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grep "$grepstr" $dest > /dev/null 2>&1
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk if [ $? != 0 ] ; then
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk grep "$grepstr" $src >> $dest
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk done
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk rm -f /tmp/*.$$
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk fi
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkdone
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenkexit 0
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk
5b64d5d44892834ba97f003080f3467299b7c5c5jeff.schenk