i.minorperm_sparc revision 5c1d0199d69216ebefa9ed86940778f6d215a97f
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#! /bin/sh
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# CDDL HEADER START
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# The contents of this file are subject to the terms of the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Common Development and Distribution License (the "License").
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# You may not use this file except in compliance with the License.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# or http://www.opensolaris.org/os/licensing.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# See the License for the specific language governing permissions
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# and limitations under the License.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# When distributing Covered Code, include this CDDL HEADER in each
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# If applicable, add the following below this CDDL HEADER, with the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# fields enclosed by brackets "[]" replaced with your own identifying
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# information: Portions Copyright [yyyy] [name of copyright owner]
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# CDDL HEADER END
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Use is subject to license terms.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# ident "%Z%%M% %I% %E% SMI"
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# NOTE: When a change is made to the source file for
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# /etc/minor_perm, a corresponding change must be made to
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# this class-action script.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If an existing entry in minor_perm is having its
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# attributes e.g. permissions, ownership changed,
4ec31c52242ebeacf67a0291c4f100e2b4a8c343Christian Brauner# add it to the list produced by make_chattr_list below.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If an existing entry must be deleted, add it to
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersen# the list produced by make_delete_list below.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If a new entry must be added to the file, add it to the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# list produced by make_add_list.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# - If a new entry is being added to minor_perm, but there
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# may already be devices of that name on the system (e.g.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# we used the system default permissions in a previous release),
3e4b0221c4a5f4e815fe2fed6ccef90d8df507f0Adrian Reber# and those old devices now need to have their attributes changed,
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# add it to the make_chattr_list AND the make_add_list lists
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen#
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen#
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber# If an entry in /etc/minor_perm needs to have its attributes
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber# changed, identify the entry in the list copied to /etc/chattr.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# by this function. The fields are:
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# <device>:<minor> <old_attrs> <new_attrs> <optional list of logical
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# devices whose attributes
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen# will need to be changed>
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen#
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen# where an <attribute list> := <perm> <user> <group>
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen#
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenmake_chattr_list() {
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersencat > /tmp/chattr.$$ << EOF
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenaudio:* 0666 root sys 0600 root sys /dev/sound/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenvol:volctl 0600 root sys 0666 root sys /dev/volctl
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensad:user 0600 root sys 0666 root sys /dev/sad/user
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersense:* 0666 root sys 0600 uucp uucp /dev/cua/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenzs:* 0666 root sys 0600 uucp uucp /dev/cua/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersensu:* 0666 root sys 0600 uucp uucp /dev/cua/*
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenssd:* 0666 root sys 0640 root sys /dev/dsk/* /dev/rdsk/*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersendad:* 0600 root sys 0640 root sys /dev/dsk/* /dev/rdsk/*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencpc:* 0600 root sys 0666 root sys /devices/pseudo/cpc*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenlog:conslog 0622 root sys 0666 root sys /dev/conslog
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensy:tty 0666 root sys 0666 root tty /dev/tty
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencvc:* 0666 root sys 0600 root sys
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencvcredir:* 0666 root sys 0600 root sys
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenssm:* 0600 root sys 0640 root sys /devices/ssm*:*
2fdca63d45448ffaa602e696865e456744fc0752Adrian Rebericmp:icmp 0600 root sys 0666 root sys /dev/rawip
2fdca63d45448ffaa602e696865e456744fc0752Adrian Rebericmp6:icmp6 0600 root sys 0666 root sys /dev/rawip6
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reberip:ip 0660 root sys 0666 root sys /dev/ip
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenip6:ip6 0660 root sys 0666 root sys /dev/ip6
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersenrts:rts 0660 root sys 0666 root sys /dev/rts
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenkeysock:keysock 0600 root sys 0666 root sys /dev/keysock
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenipsecah:ipsecah 0600 root sys 0666 root sys /dev/ipsecah
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenipsecesp:ipsecesp 0600 root sys 0666 root sys /dev/ipsecesp
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenspdsock:spdsock 0600 root sys 0666 root sys /dev/spdsock
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensad:admin 0600 root sys 0666 root sys /dev/sad/admin
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenfssnap:ctl 0600 root sys 0666 root sys /dev/fssnapctl
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenfssnap:* 0600 root sys 0640 root sys /dev/fssnap/*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:ce 0600 root sys 0666 root sys /dev/ce
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:eri 0600 root sys 0666 root sys /dev/eri
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:ge 0600 root sys 0666 root sys /dev/ge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:hme 0600 root sys 0666 root sys /dev/hme
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:qfe 0600 root sys 0666 root sys /dev/qfe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:bge 0600 root sys 0666 root sys /dev/bge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:rge 0600 root sys 0666 root sys /dev/rge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:xge 0600 root sys 0666 root sys /dev/xge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:nge 0600 root sys 0666 root sys /dev/nge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:e1000g 0666 root root 0666 root sys /dev/e1000g
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:chxge 0600 root sys 0666 root sys /dev/chxge
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:vsw 0600 root sys 0666 root sys /dev/vsw
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:vnet 0600 root sys 0666 root sys /dev/vnet
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:pcwl 0600 root sys 0666 root sys /dev/pcwl
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:pcan 0600 root sys 0666 root sys /dev/pcan
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:afe 0600 root sys 0666 root sys /dev/afe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:mxfe 0600 root sys 0666 root sys /dev/mxfe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:rtls 0600 root sys 0666 root sys /dev/rtls
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenbge:* 0600 root sys 0666 root sys /dev/bge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenrge:* 0600 root sys 0666 root sys /dev/rge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenxge:* 0600 root sys 0666 root sys /dev/xge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersennge:* 0600 root sys 0666 root sys /dev/nge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersene1000g:* 0666 root root 0666 root sys /dev/e1000g*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenchxge:* 0600 root sys 0666 root sys /dev/chxge*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenvsw:* 0600 root sys 0666 root sys /dev/vsw*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenvnet:* 0600 root sys 0666 root sys /dev/vnet*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenpcwl:* 0600 root sys 0666 root sys /dev/pcwl*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenpcan:* 0600 root sys 0666 root sys /dev/pcan*
9451eeffb0688b801034d963c455c8b31ccbf28cTycho Andersenclone:dmfe 0600 root sys 0666 root sys /dev/dmfe
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendmfe:* 0600 root sys 0666 root sys /dev/dmfe*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenclone:pcelx 0600 root sys 0666 root sys /dev/pcelx
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenpcelx:* 0600 root sys 0666 root sys /dev/pcelx*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenafe:* 0600 root sys 0666 root sys /dev/afe*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmxfe:* 0600 root sys 0666 root sys /dev/mxfe*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenrtls:* 0600 root sys 0666 root sys /dev/rtls*
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eilingipf:* 0600 root sys 0666 root sys /dev/ipf
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eilingpfil:* 0600 root sys 0666 root sys /dev/pfil
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenscsi_vhci:devctl 0600 root sys 0666 root sys /devices/scsi_vhci:devctl
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenfbt:fbt 0600 root sys 0644 root sys /dev/dtrace/provider/fbt
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenlockstat:* 0600 root sys 0644 root sys /dev/dtrace/provider/lockstat
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersenprofile:profile 0600 root sys 0644 root sys /dev/dtrace/provider/profile
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersensdt:sdt 0600 root sys 0644 root sys /dev/dtrace/provider/sdt
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersensystrace:systrace 0600 root sys 0644 root sys /dev/dtrace/provider/systrace
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho AndersenEOF
7103fe6f08cb04a498e3090d8416b4275a4a0d7eTycho Andersen}
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen#
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen# If an entry in /etc/minor_perm needs to be deleted, identify
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# the entry in the list copied to /etc/delete.$$ by this function.
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersen# The fields are:
9179d21a5df6d41770df2aa67653722596ab079eTycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# <device>:<minor> <optional list of logical devices to be deleted>
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmake_delete_list() {
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersencat > /tmp/delete.$$ << EOF
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersenmm:mbio /dev/mbio /devices/pseudo/mm:mbio
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenmm:mbmem /dev/mbmem /devices/pseudo/mm:mbmem
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenclone:amd,0,aux,audio
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensw:drum
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersenrip:rawip
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersenzs:*
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersenconsfb:consfb
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersenwin:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingrtvc:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersengt:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingmic:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingcgeight-p4:*
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersencgfour:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersencgtwo:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenid:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenxd:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenxt:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenxy:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenie:*
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenbe:*
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersense:ucm
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersense:ucmctl
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenclone:arp
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenclone:icmp
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenclone:ip
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenclone:tcp
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenclone:udp
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenclone:rts
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenclone:ipsecah
13389b2963692a51162c703d8a64a79542b18949Tycho Andersenclone:ipsecesp
13389b2963692a51162c703d8a64a79542b18949Tycho Andersenclone:keysock
13389b2963692a51162c703d8a64a79542b18949Tycho Andersenclone:le
13389b2963692a51162c703d8a64a79542b18949Tycho Andersensu:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenprofile:profile
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:qe
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersencgfourteen:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencgeight:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho AndersenSUNW,sx:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersensx_cmem:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenstc:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersendbri:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,DBRId:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,DBRIe:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,DBRIf:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenEOF
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen}
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersen# If an entry needs to be added to /etc/minor_perm, add the first
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersen# field of the entry to the list created by this function. The
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersen# remainder of the entry will be extracted from the /etc/minor_perm
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen# in the package being installed, so it is not necessary to supply
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# it here.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmake_add_list() {
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersencat > /tmp/add.$$ << EOF
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenclone:llc1
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenstc:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmcpzsa:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmcpp:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenvol:volctl
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersentl:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersentnf:tnfctl
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersentnf:tnfmap
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenzs:[a-z]
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenzs:[a-z],cu
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensad:user
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersense:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensu:[a-z]
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensu:[a-z],cu
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensu:ssp
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensu:sspctl
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenfdthree:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenssd:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendad:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenpm:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersentod:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,pmc:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,mic:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenSUNW,fas:devctl
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersencvc:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersencvcredir:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendevinfo:devinfo
9179d21a5df6d41770df2aa67653722596ab079eTycho Andersenenvctrltwo:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersense:[a-h]
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersense:[a-h],cu
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersense:[0-7],hdlc
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersense:ssp
dd62857af3f7a267f14bf5769560daea6c3e8decTycho Andersense:sspctl
dd62857af3f7a267f14bf5769560daea6c3e8decTycho Andersenclone:hme
5b4543292d764b61b89192d7c4f9f143e570aac2Tycho Andersenclone:eri
5b4543292d764b61b89192d7c4f9f143e570aac2Tycho Andersenwc:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenarp:arp
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersenicmp:icmp
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenicmp6:icmp6
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenip:ip
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenip6:ip6
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersentcp:tcp
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersentcp6:tcp6
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenudp:udp
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersenudp6:udp6
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersenrts:rts
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersenpoll:*
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersenpool:pool
fc51f291c5ae414911cc2fbb5fa40e02cfe5385aTycho Andersenpool:poolctl
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersencpc:shared
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersensysmsg:msglog
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensysmsg:sysmsg
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenipsecah:ipsecah
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenipsecesp:ipsecesp
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenkeysock:keysock
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenspdsock:spdsock
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendevinfo:devinfo,ro
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenlofi:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenlofi:ctl
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersensgen:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenfssnap:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenfssnap:ctl
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenpcf8574:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenpcf8591:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersengpio_87317:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenrsm:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenrandom:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenmm:allkmem
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenssm:*
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenbscv:*
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reberclone:bge
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reberclone:rge
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reberclone:xge
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reberclone:nge
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenclone:e1000g
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenclone:chxge
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersenclone:vsw
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:vnet
36d2096cf43340701150778d5547ec4f5a127338Tycho Andersenclone:pcwl
36d2096cf43340701150778d5547ec4f5a127338Tycho Andersenclone:pcan
36d2096cf43340701150778d5547ec4f5a127338Tycho Andersenclone:afe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:mxfe
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenclone:rtls
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenbge:*
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenrge:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersenxge:*
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersennge:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersene1000g:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingchxge:*
4c0c0319a5baa86a4db8e80bbe149ee5bd8c9816Niklas Eilingvsw:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersenvnet:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingpcwl:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingpcan:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersenafe:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingmxfe:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersenrtls:*
74eb576cef2f775ed77d2a7909057b1a09540065Niklas Eilingclone:dmfe
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersendmfe:*
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenclone:pcelx
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenpcelx:*
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersenclone:ibd
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenibd:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersensysevent:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenramdisk:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenramdisk:ctl
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersencryptoadm:cryptoadm
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersencrypto:crypto
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersendtrace:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenfasttrap:fasttrap
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenipf:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenpfil:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersenbl:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersensctp:*
a3f4eb755e69de91d7a8f8a01dee96cb68608026Tycho Andersensctp6:*
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersenvni:*
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersencpuid:self
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenntwdt:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendld:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenaggr:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenmdesc:*
13389b2963692a51162c703d8a64a79542b18949Tycho Andersenzfs:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenzfs:zfs
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenscsi_vhci:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenkssl:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenfbt:fbt
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenprofile:profile
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensdt:sdt
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersensystrace:systrace
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenphysmem:*
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho AndersenEOF
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen}
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho AndersenPATH="/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin"
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho Andersenexport PATH
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho Andersen
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho Andersen# Internal routine to create a sed script which can be used to
97e4f1a91f39fa3b4012eedf8f4e56f419dd2ccaTycho Andersen# escape all shell globbing metacharacters in a path.
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencreate_esc_sedscript()
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen{
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersencat > /tmp/esc.sed.$$ << EOF
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersens/\*/\\\\*/g
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersens/\?/\\\\?/g
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersens/\[/\\\\[/g
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersens/\]/\\\\]/g
4b54788e85a4e2f423133354f8141ed02f795d71Tycho AndersenEOF
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen}
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen# Internal routine to convert an entry in a /tmp/chwhatever.$$ file to
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen# an appropriately escaped pattern which can be used to grep into minor_perm.
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersenentry2pattern()
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen{
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # the first argument is the 'key' field from the change file.
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # entries can contain shell globbing characters to match
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # several devices - hence all the palaver below.
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen printf '%s' `echo "$1" | sed \
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen -e 's/\*/\\\\*/g' -e 's/\?/\\\\?/g' \
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen -e 's/\./\\\\./g' -e 's/\[/\\\\[/g' \
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen -e 's/\]/\\\\]/g'`
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen shift
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen # the remaining optional arguments are tokens separated by white-space
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen
13389b2963692a51162c703d8a64a79542b18949Tycho Andersen if [ $# = 0 ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen printf '[ \t]'
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen else
fa07124900989e1a2e617659093da293b583470fTycho Andersen while [ -n "$1" ]
fa07124900989e1a2e617659093da293b583470fTycho Andersen do
fa07124900989e1a2e617659093da293b583470fTycho Andersen printf '[ \t][ \t]*%s' $1
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen shift
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen done
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen printf '[ \t]*$'
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen}
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersenwhile read src dest
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersendo
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen if [ ! -f $dest ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen cp $src $dest
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen else
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen rm -f /tmp/*.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen create_esc_sedscript
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen make_chattr_list
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen make_delete_list
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen make_add_list
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # Process the list of devices whose attributes are to be
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # changed. Find those that actually need to be
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # applied to the file. For each change that needs
c1fd648dd85fd254e31bb8d3503cb6b7009cfcfcTycho Andersen # to be applied, add an entry for it to the sed
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # script that will eventually be applied to the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # currently-installed /etc/minor_perm file. Also,
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # add an entry to the /tmp/chdevs.$$ file, which
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # contains the list of logical names of devices
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # whose permissions need to be changed.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen cat /tmp/chattr.$$ | \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen while read key oldp oldu oldg newp newu newg chdevs
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do_chdevs=no
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eiling #
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # First determine whether the device entry
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen # is already in the file, but with the old
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # permissions. If so, the entry needs to be
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # modified and the devices in the chdevs list
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # need to have their permissions and ownerships
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling # changed.
72a30576da6f59f7d6ef9452bae78ec1ec4feea0Niklas Eiling #
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen grepstr=`entry2pattern "${key}" $oldp $oldu $oldg`
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen if grep "$grepstr" $dest > /dev/null 2>&1; then
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen echo "s/${grepstr}/$key $newp $newu $newg/" \
cf4b07a5af0d27fb55f0084172d10e725f11e0bdTycho Andersen >> /tmp/sedscript.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do_chdevs=yes
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # Now determine whether the device entry is
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # in the file at all. If not, it is a new
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # entry, but there may already be devices
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # on the system whose permissions need to
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # be changed.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen grepstr=`entry2pattern "${key}"`
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen grep "${grepstr}" $dest > /dev/null 2>&1
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ $? != 0 ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen do_chdevs=yes
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner if [ $do_chdevs = yes -a "$chdevs" != "" ] ; then
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner xchdevs=`echo "$chdevs" | \
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner sed -f /tmp/esc.sed.$$`
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen for m in $xchdevs ; do
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner echo "$m" $oldp $oldu $oldg \
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen $newp $newu $newg >> /tmp/chdevs.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen done
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen done
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Make sure /dev/volctl gets its permissions corrected.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # (systems upgraded from 2.2 to 2.3 may have a correct
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # entry for /dev/volctl in the /etc/minor_perm file
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # but the actual /dev/volctl node may have the wrong
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # permissions.)
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen echo /dev/volctl 0600 root sys 0666 root sys >> /tmp/chdevs.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ -s /tmp/chdevs.$$ ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen sort -u /tmp/chdevs.$$ > /tmp/tmp.$$
755fa45300ba1dc5da63a1b88cec3e205172f078Tycho Andersen mv /tmp/tmp.$$ /tmp/chdevs.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Process the list of devices to be deleted.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Find those that actually need to be deleted
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # from the file. For each entry to be deleted,
755fa45300ba1dc5da63a1b88cec3e205172f078Tycho Andersen # add an entry for it to the sed script that will
d9b32b0900cb7053d788b1b501653c7bcf5149c4Serge Hallyn # eventually be applied to the currently-installed
d9b32b0900cb7053d788b1b501653c7bcf5149c4Serge Hallyn # /etc/minor_perm file. Also, add an entry to the
d9b32b0900cb7053d788b1b501653c7bcf5149c4Serge Hallyn # /tmp/deldevs.$$ file, which contains the list of
755fa45300ba1dc5da63a1b88cec3e205172f078Tycho Andersen # logical names of devices to be deleted.
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen cat /tmp/delete.$$ | while read key deldevs
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner do
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen grepstr=`entry2pattern "${key}"`
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if grep "$grepstr" $dest > /dev/null 2>&1; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen echo "/${grepstr}/d" >> /tmp/sedscript.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ "$deldevs" != "" ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen xdeldevs=`echo "$deldevs" | \
4eae4051384ad52f03ed9248eb1c51560d115048Tycho Andersen sed -f /tmp/esc.sed.$$`
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen for m in $xdeldevs ; do
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen echo "$m" >> /tmp/deldevs.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen done
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen done
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ -s /tmp/deldevs.$$ ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen sort -u /tmp/deldevs.$$ > /tmp/tmp.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen mv /tmp/tmp.$$ /tmp/deldevs.$$
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner fi
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner #
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # Apply the sed script built above to the
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # currently-installed /etc/minor_perm file.
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner #
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ -s /tmp/sedscript.$$ ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen sed -f /tmp/sedscript.$$ $dest > /tmp/tmp.$$
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen cp /tmp/tmp.$$ $dest
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # Special case code to handle bug in 2.1, 2.2, and
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # early 2.3 releases: the link from /dev/sound/*
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # has one extra set of "../"'s in the link. This
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # doesn't cause problems in normal operation
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # because ".."'s that would take the search path
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # higher than the real root are ignored. However,
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # during upgrade, when the system being upgraded is
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # mounted at /a, the extra ".." in the link causes
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # the link to be unresolvable. The link must be
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # corrected so that the chmod of /dev/sound/*
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # works.
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner #
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ "$PKG_INSTALL_ROOT" != "" -a "$PKG_INSTALL_ROOT" != "/" ]
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen for i in $PKG_INSTALL_ROOT/dev/sound/* ; do
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen if [ "$i" = "$PKG_INSTALL_ROOT/dev/sound/*" ]
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen then
3158ab5b9e16bb26267378bd54e113495631f8f2Tycho Andersen break;
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner fi
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner # if it's not a symlink, continue
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner if [ ! -h $i ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen continue
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
3158ab5b9e16bb26267378bd54e113495631f8f2Tycho Andersen ls -L $i >/dev/null 2>&1
606cd0e7d053a69166af998a2c636844e7fdb502Christian Brauner if [ $? = 0 ] ; then
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # link is already OK
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen continue
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # otherwise, link can't be followed
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # build the correct link
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber link=`ls -l $i | sed 's,.* ,,'`
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen link=`expr $link : '\.\.\/\(.*\)'`
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen if [ "$link" = "" ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen continue;
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber fi
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen
8ba5ced736c4e4ca36e3f5fd36614c2682bdc9baTycho Andersen # build a test link
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen rm -f $PKG_INSTALL_ROOT/dev/sound/test.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen ln -s $link $PKG_INSTALL_ROOT/dev/sound/test.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # test the link
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen ls -L $PKG_INSTALL_ROOT/dev/sound/test.$$ \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen >/dev/null 2>&1
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # it worked, so replace old link with new
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen if [ $? = 0 ] ; then
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen rm -f $i
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen ln -s $link $i
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen fi
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen rm -f $PKG_INSTALL_ROOT/dev/sound/test.$$
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen done
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # For all entries in minor_perm whose attributes had
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # to be corrected, correct the relevant attributes of the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # already-existing devices that correspond to those
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # entries.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen if [ -s /tmp/chdevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen "$PKG_INSTALL_ROOT" != "/" ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen cat /tmp/chdevs.$$ |\
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen while read device oldp oldu oldg newp newu newg
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # Note that we take pains -only- to change
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # the permission/ownership of devices that
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # have kept their original permissions.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen for dev in $PKG_INSTALL_ROOT/$device; do
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen find $dev -follow -perm $oldp -exec \
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen chmod $newp $dev \; >/dev/null 2>&1
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen find $dev -follow -user $oldu -exec \
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen chown $newu $dev \; >/dev/null 2>&1
65b20221372dec91b687091ac390fbbd789e84f6Tycho Andersen find $dev -follow -group $oldg -exec \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen chgrp $newg $dev \; >/dev/null 2>&1
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen done
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen done
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # For all entries in minor_perm that were deleted,
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # remove the /dev entries that point to device nodes
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen # that correspond to those entries.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen #
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen if [ -s /tmp/deldevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen "$PKG_INSTALL_ROOT" != "/" ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen cat /tmp/deldevs.$$ | while read device
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen rm -f $PKG_INSTALL_ROOT/$device
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen done
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersen fi
aef3d51e61d8e65f31201e4a60eb4102ce5b4385Tycho Andersen
3e4b0221c4a5f4e815fe2fed6ccef90d8df507f0Adrian Reber
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen cat /tmp/add.$$ | while read key
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen grepstr=`entry2pattern "${key}"`
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen grep "$grepstr" $dest > /dev/null 2>&1
3d9a5c85fd79e5d564c024063f9396b92989961aTycho Andersen if [ $? != 0 ] ; then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen grep "$grepstr" $src >> $dest
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen done
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen rm -f /tmp/*.$$
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersendone
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersenexit 0
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen