i.minorperm_i386 revision c533a883a71cff9ff32df1c53c31201e1cbf371f
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#!/bin/sh
bec154197d3d640b0d5b416cd5218ea58dca5d3aTinderbox User#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# CDDL HEADER START
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater# The contents of this file are subject to the terms of the
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Common Development and Distribution License (the "License").
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# You may not use this file except in compliance with the License.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# or http://www.opensolaris.org/os/licensing.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# See the License for the specific language governing permissions
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# and limitations under the License.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# When distributing Covered Code, include this CDDL HEADER in each
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# If applicable, add the following below this CDDL HEADER, with the
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User# fields enclosed by brackets "[]" replaced with your own identifying
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# information: Portions Copyright [yyyy] [name of copyright owner]
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# CDDL HEADER END
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Use is subject to license terms.
0c6ada0a814f3c5417daa1654129bc2af56ed504Automatic Updater#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#ident "%Z%%M% %I% %E% SMI"
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# NOTE: When a change is made to the source file for
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# /etc/minor_perm, a corresponding change must be made to
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# this class-action script.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
0c6ada0a814f3c5417daa1654129bc2af56ed504Automatic Updater# - If an existing entry in minor_perm is having its
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# attributes e.g. permissions, ownership changed,
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# add it to the list produced by make_chattr_list below.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# - If an existing entry must be deleted, add it to
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# the list produced by make_delete_list below.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# - If a new entry must be added to the file, add it to the
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# list produced by make_add_list.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# - If a new entry is being added to minor_perm, but there
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# may already be devices of that name on the system (e.g.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# we used the system default permissions in a previous release),
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# and those old devices now need to have their attributes changed,
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# add it to the make_chattr_list AND the make_add_list lists
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# If an entry in /etc/minor_perm needs to have its attributes
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User# changed, identify the entry in the list copied to /etc/chattr.$$
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# by this function. The fields are:
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# <device>:<minor> <old_attrs> <new_attrs> <optional list of logical
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# devices whose attributes
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# will need to be changed>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# where an <attribute list> := <perm> <user> <group>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# NOTE: this list should also contain entries for nodes that previously
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# were not in /etc/minor_perm (which means the default mode of 600,
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox User# owner/group == root/sys), but now have an entry
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox User#
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox User
c247e3f281613fabe1af362e9f3157e35ebbe52cMark Andrewsmake_chattr_list()
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox User{
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox Usercat > /tmp/chattr.$$ << EOF
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox Uservol:volctl 0600 root sys 0666 root sys /dev/volctl
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox Userclone:llc1 0600 root sys 0666 root sys /dev/llc1
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:sound,sbpro 0666 root sys 0600 root sys /dev/sound/*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewssbpro:* 0666 root sys 0600 root sys /dev/sound/*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewslog:conslog 0620 root sys 0666 root sys /dev/conslog
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewssy:tty 0666 root sys 0666 root tty /dev/tty
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsicmp:icmp 0600 root sys 0666 root sys /dev/rawip
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsicmp6:icmp6 0600 root sys 0666 root sys /dev/rawip6
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsip:ip 0660 root sys 0666 root sys /dev/ip
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsip6:ip6 0660 root sys 0666 root sys /dev/ip6
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsrts:rts 0660 root sys 0666 root sys /dev/rts
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewskeysock:keysock 0600 root sys 0666 root sys /dev/keysock
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsipsecah:ipsecah 0600 root sys 0666 root sys /dev/ipsecah
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsipsecesp:ipsecesp 0600 root sys 0666 root sys /dev/ipsecesp
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox Userspdsock:spdsock 0600 root sys 0666 root sys /dev/spdsock
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewssad:admin 0600 root sys 0666 root sys /dev/sad/admin
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsfssnap:ctl 0600 root sys 0666 root sys /dev/fssnapctl
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsfssnap:* 0600 root sys 0640 root sys /dev/fssnap/*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:dnet 0600 root sys 0666 root sys /dev/dnet
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsdnet:* 0600 root sys 0666 root sys /dev/dnet*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:elxl 0600 root sys 0666 root sys /dev/elxl
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewselxl:* 0600 root sys 0666 root sys /dev/elxl*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:iprb 0600 root sys 0666 root sys /dev/iprb
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsiprb:* 0600 root sys 0666 root sys /dev/iprb*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:pcelx 0600 root sys 0666 root sys /dev/pcelx
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewspcelx:* 0600 root sys 0666 root sys /dev/pcelx*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:spwr 0600 root sys 0666 root sys /dev/spwr
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsspwr:* 0600 root sys 0666 root sys /dev/spwr*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewscpc:* 0600 root sys 0666 root sys /devices/pseudo/cpc*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsipf:* 0600 root sys 0666 root sys /dev/ipf
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewspfil:* 0600 root sys 0666 root sys /dev/pfil
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsscsi_vhci:devctl 0600 root sys 0666 root sys /devices/scsi_vhci:devctl
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsfbt:fbt 0600 root sys 0644 root sys /dev/dtrace/provider/fbt
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewslockstat:* 0600 root sys 0644 root sys /dev/dtrace/provider/lockstat
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsprofile:profile 0600 root sys 0644 root sys /dev/dtrace/provider/profile
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewssdt:sdt 0600 root sys 0644 root sys /dev/dtrace/provider/sdt
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewssystrace:systrace 0600 root sys 0644 root sys /dev/dtrace/provider/systrace
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:bge 0600 root sys 0666 root sys /dev/bge
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:rge 0600 root sys 0666 root sys /dev/rge
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:xge 0600 root sys 0666 root sys /dev/xge
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:nge 0600 root sys 0666 root sys /dev/nge
1224c3b69b3d18f7127aa042644936af25a2d679Mark Andrewsclone:chxge 0600 root sys 0666 root sys /dev/chxge
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:pcn 0600 root sys 0666 root sys /dev/pcn
1224c3b69b3d18f7127aa042644936af25a2d679Mark Andrewsclone:rtls 0600 root sys 0666 root sys /dev/rtls
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:ath 0600 root sys 0666 root sys /dev/ath
1224c3b69b3d18f7127aa042644936af25a2d679Mark Andrewsclone:ipw 0600 root sys 0666 root sys /dev/ipw
b2f07642fd712c8fda81a116bcdde229ab291f33Tinderbox Userclone:iwi 0600 root sys 0666 root sys /dev/iwi
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:iwk 0600 root sys 0666 root sys /dev/iwk
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:pcwl 0600 root sys 0666 root sys /dev/pcwl
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:pcan 0600 root sys 0666 root sys /dev/pcan
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:ral 0600 root sys 0666 root sys /dev/ral
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:rtw 0600 root sys 0666 root sys /dev/rtw
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:wpi 0600 root sys 0666 root sys /dev/wpi
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:afe 0600 root sys 0666 root sys /dev/afe
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:dmfe 0600 root sys 0666 root sys /dev/dmfe
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsclone:mxfe 0600 root sys 0666 root sys /dev/mxfe
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsbge:* 0600 root sys 0666 root sys /dev/bge*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsrge:* 0600 root sys 0666 root sys /dev/rge*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsxge:* 0600 root sys 0666 root sys /dev/xge*
c247e3f281613fabe1af362e9f3157e35ebbe52cMark Andrewsnge:* 0600 root sys 0666 root sys /dev/nge*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewse1000g:* 0666 root root 0666 root sys /dev/e1000g*
c247e3f281613fabe1af362e9f3157e35ebbe52cMark Andrewschxge:* 0600 root sys 0666 root sys /dev/chxge*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewspcn:* 0600 root sys 0666 root sys /dev/pcn*
c247e3f281613fabe1af362e9f3157e35ebbe52cMark Andrewsrtls:* 0600 root sys 0666 root sys /dev/rtls*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsath:* 0600 root sys 0666 root sys /dev/ath*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsipw:* 0600 root sys 0666 root sys /dev/ipw*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsiwi:* 0600 root sys 0666 root sys /dev/iwi*
c247e3f281613fabe1af362e9f3157e35ebbe52cMark Andrewsiwk:* 0600 root sys 0666 root sys /dev/iwk*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewspcwl:* 0600 root sys 0666 root sys /dev/pcwl*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewspcan:* 0600 root sys 0666 root sys /dev/pcan*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsral:* 0600 root sys 0666 root sys /dev/ral*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsrtw:* 0600 root sys 0666 root sys /dev/rtw*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewswpi:* 0600 root sys 0666 root sys /dev/wpi*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsafe:* 0600 root sys 0666 root sys /dev/afe*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsdmfe:* 0600 root sys 0666 root sys /dev/dmfe*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsmxfe:* 0600 root sys 0666 root sys /dev/mxfe*
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsEOF
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews}
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User#
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User# If an entry in /etc/minor_perm needs to be deleted, identify
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# the entry in the list copied to /etc/delete.$$ by this function.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# The fields are:
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# <device>:<minor> <optional list of logical devices to be deleted>
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User#
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usermake_delete_list()
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User{
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercat > /tmp/delete.$$ << EOF
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrip:rawip
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userconsfb:consfb
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:el
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:elx
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:sle
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:sie
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:sp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ip
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:icmp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:udp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:tcp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:rts
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:arp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ipsecah
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ipsecesp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:keysock
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:smc
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:tr
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userelx:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userwin:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercmtp:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userprofile:profile
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userasy:[a-z]
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userasy:[a-z],cu
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useri2o_bs:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox UserEOF
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User}
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User#
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# If an entry needs to be added to /etc/minor_perm, add the first
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# field of the entry to the list created by this function. The
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# remainder of the entry will be extracted from the /etc/minor_perm
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# in the package being installed, so it is not necessary to supply
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# it here.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User#
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usermake_add_list()
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User{
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercat > /tmp/add.$$ << EOF
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Uservol:volctl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:llc1
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usertnf:tnfctl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usertnf:tnfmap
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userst:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpm:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdevinfo:devinfo
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useropeneepr:openprom
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userwc:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userip:ip
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userip6:ip6
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usericmp:icmp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usericmp6:icmp6
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userudp:udp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userudp6:udp6
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usertcp:tcp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usertcp6:tcp6
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrts:rts
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userarp:arp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpoll:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpool:pool
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpool:poolctl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercpc:shared
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersysmsg:msglog
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersysmsg:sysmsg
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useripsecah:ipsecah
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useripsecesp:ipsecesp
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userkeysock:keysock
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userspdsock:spdsock
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdevinfo:devinfo,ro
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userlofi:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userlofi:ctl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersgen:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userfssnap:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userfssnap:ctl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrsm:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrandom:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usermm:allkmem
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:dnet
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdnet:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:elxl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userelxl:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ibd
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useribd:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:iprb
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useriprb:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:pcelx
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpcelx:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:spwr
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userspwr:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersysevent:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userramdisk:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userramdisk:ctl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercryptoadm:cryptoadm
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercrypto:crypto
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdtrace:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userfasttrap:fasttrap
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useripf:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpfil:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userbl:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersctp:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersctp6:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Uservni:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercpuid:self
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:bge
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:rge
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:xge
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:nge
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:e1000g
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:chxge
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:pcn
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:rtls
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ath
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ipw
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:iwi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:iwk
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:pcwl
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:pcan
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:ral
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:rtw
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:wpi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:afe
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:dmfe
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userclone:mxfe
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userbge:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrge:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userxge:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usernge:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usere1000g:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userchxge:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpcn:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrtls:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userath:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useripw:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useriwi:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useriwk:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpcwl:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userpcan:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userral:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userrtw:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userwpi:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userafe:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdmfe:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usermxfe:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userbmc:bmc
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdld:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Useraggr:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersmbios:smbios
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userzfs:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userzfs:zfs
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userscsi_vhci:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userkssl:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userfbt:fbt
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userprofile:profile
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersdt:sdt
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersoftmac:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersystrace:systrace
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userlx_ptm:lx_ptmajor
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userlx_systrace:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userphysmem:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userasy:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userasy:*,cu
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userucode:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userbattery:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usersmbsrv:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Uservscan:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usernsmb:*
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox UserEOF
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User}
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox UserPATH="/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin"
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userexport PATH
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# Internal routine to create a sed script which can be used to
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# escape all shell globbing metacharacters in a path.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercreate_esc_sedscript()
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User{
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Usercat > /tmp/esc.sed.$$ << EOF
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Users/\*/\\\\*/g
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Users/\?/\\\\?/g
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Users/\[/\\\\[/g
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Users/\]/\\\\]/g
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox UserEOF
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User}
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# Internal routine to convert an entry in a /tmp/chwhatever.$$ file to
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User# an appropriately escaped pattern which can be used to grep into minor_perm.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userentry2pattern()
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User{
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # the first argument is the 'key' field from the change file.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # entries can contain shell globbing characters to match
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # several devices - hence all the palaver below.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User printf '%s' `echo "$1" | sed \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User -e 's/\*/\\\\*/g' -e 's/\?/\\\\?/g' \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User -e 's/\./\\\\./g' -e 's/\[/\\\\[/g' \
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User -e 's/\]/\\\\]/g'`
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User shift
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User # the remaining optional arguments are tokens separated by white-space
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User if [ $# = 0 ] ; then
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User printf '[ \t]'
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User else
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User while [ -n "$1" ]
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User printf '[ \t][ \t]*%s' $1
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User shift
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User printf '[ \t]*$'
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User}
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userwhile read src dest
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox Userdo
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ ! -f $dest ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User cp $src $dest
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User else
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User rm -f /tmp/*.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User create_esc_sedscript
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User make_chattr_list
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User make_delete_list
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User make_add_list
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # Process the list of devices whose attributes are to be
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # changed. Find those that actually need to be
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # applied to the file. For each change that needs
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # to be applied, add an entry for it to the sed
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # script that will eventually be applied to the
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # currently-installed /etc/minor_perm file. Also,
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # add an entry to the /tmp/chdevs.$$ file, which
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # contains the list of logical names of devices
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # whose permissions need to be changed.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User cat /tmp/chattr.$$ | \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User while read key oldp oldu oldg newp newu newg chdevs
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do_chdevs=no
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # First determine whether the device entry
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # is already in the file, but with the old
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # permissions. If so, the entry needs to be
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # modified and the devices in the chdevs list
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # need to have their permissions and ownerships
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # changed.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User grepstr=`entry2pattern "${key}" $oldp $oldu $oldg`
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if grep "$grepstr" $dest > /dev/null 2>&1; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User echo "s/${grepstr}/$key $newp $newu $newg/" \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User >> /tmp/sedscript.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do_chdevs=yes
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # Now determine whether the device entry is
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # in the file at all. If not, it is a new
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # entry, but there may already be devices
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # on the system whose permissions need to
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # be changed.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User grepstr=`entry2pattern "${key}"`
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User grep "${grepstr}" $dest > /dev/null 2>&1
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ $? != 0 ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do_chdevs=yes
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ $do_chdevs = yes -a "$chdevs" != "" ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User xchdevs=`echo "$chdevs" | \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User sed -f /tmp/esc.sed.$$`
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User for m in $xchdevs ; do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User echo "$m" $oldp $oldu $oldg \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User $newp $newu $newg >> /tmp/chdevs.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # sort the "change attributes" list
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ -s /tmp/chdevs.$$ ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User sort -u /tmp/chdevs.$$ > /tmp/tmp.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User mv /tmp/tmp.$$ /tmp/chdevs.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # Process the list of devices to be deleted.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # Find those that actually need to be deleted
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # from the file. For each entry to be deleted,
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # add an entry for it to the sed script that will
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # eventually be applied to the currently-installed
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # /etc/minor_perm file. Also, add an entry to the
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # /tmp/deldevs.$$ file, which contains the list of
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # logical names of devices to be deleted.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User cat /tmp/delete.$$ | while read key deldevs
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User grepstr=`entry2pattern "${key}"`
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if grep "$grepstr" $dest > /dev/null 2>&1; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User echo "/${grepstr}/d" >> /tmp/sedscript.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ "$deldevs" != "" ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User xdeldevs=`echo "$deldevs" | \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User sed -f /tmp/esc.sed.$$`
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User for m in $xdeldevs ; do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User echo "$m" >> /tmp/deldevs.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ -s /tmp/deldevs.$$ ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User sort -u /tmp/deldevs.$$ > /tmp/tmp.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User mv /tmp/tmp.$$ /tmp/deldevs.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # Apply the sed script possibly built above to the
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # currently-installed /etc/minor_perm file.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ -s /tmp/sedscript.$$ ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User sed -f /tmp/sedscript.$$ $dest > /tmp/tmp.$$
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User cp /tmp/tmp.$$ $dest
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # For all entries in minor_perm whose attributes had
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # to be corrected, correct the relevant attributes of the
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # already-existing devices that correspond to those
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # entries.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User if [ -s /tmp/chdevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User "$PKG_INSTALL_ROOT" != "/" ] ; then
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User cat /tmp/chdevs.$$ |\
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User while read device oldp oldu oldg newp newu newg
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # Note that we take pains -only- to change
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # the permission/ownership of devices that
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # have kept their original permissions.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User for dev in $PKG_INSTALL_ROOT/$device; do
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User find $dev -follow -perm $oldp -exec \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User chmod $newp $dev \; >/dev/null 2>&1
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User find $dev -follow -user $oldu -exec \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User chown $newu $dev \; >/dev/null 2>&1
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User find $dev -follow -group $oldg -exec \
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User chgrp $newg $dev \; >/dev/null 2>&1
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User done
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User fi
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # For all entries in minor_perm that were deleted,
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # remove the /dev entries that point to device nodes
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User # that correspond to those entries.
0ccb0e98c77a9b9636a036f8f64f5679a430aaf4Tinderbox User #
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews if [ -s /tmp/deldevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews "$PKG_INSTALL_ROOT" != "/" ] ; then
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User cat /tmp/deldevs.$$ | while read device
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews do
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews rm -f $PKG_INSTALL_ROOT/$device
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews done
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews fi
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews cat /tmp/add.$$ | while read key
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews do
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews grepstr=`entry2pattern "${key}"`
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews grep "$grepstr" $dest > /dev/null 2>&1
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User if [ $? != 0 ] ; then
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews grep "$grepstr" $src >> $dest
1d216bfaa764f2b40c57cf61987453c5a6fa9b0aMark Andrews fi
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews done
d71e2e0c61df16ff37c9934c371a4a60c08974f7Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews rm -f /tmp/*.$$
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews fi
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsdone
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsexit 0
94479b38340a00f0daf0ae0e1d3d673f845609ffTinderbox User