i.minorperm_i386 revision 40db2e2b777b79f3dd0d6d9629593a07f86b9c0a
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#!/bin/sh
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews#
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews# CDDL HEADER START
eae67738cba5ca069e9d1d4e7b836a2f7b00a374Mark Andrews#
eae67738cba5ca069e9d1d4e7b836a2f7b00a374Mark Andrews# The contents of this file are subject to the terms of the
2a40fdc2d34adb8a5c72a748449699666032d461Mark Andrews# Common Development and Distribution License (the "License").
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews# You may not use this file except in compliance with the License.
a3b428812703d22a605a9f882e71ed65f0ffdc65Mark Andrews#
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# or http://www.opensolaris.org/os/licensing.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# See the License for the specific language governing permissions
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews# and limitations under the License.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
d56e188030368b835122d759ebbf8d9613c166f4Mark Andrews# When distributing Covered Code, include this CDDL HEADER in each
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews# If applicable, add the following below this CDDL HEADER, with the
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# fields enclosed by brackets "[]" replaced with your own identifying
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews# information: Portions Copyright [yyyy] [name of copyright owner]
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# CDDL HEADER END
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews#
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# Use is subject to license terms.
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews#
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews#ident "%Z%%M% %I% %E% SMI"
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews#
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews#
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews# NOTE: When a change is made to the source file for
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson# /etc/minor_perm, a corresponding change must be made to
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews# this class-action script.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
a3b428812703d22a605a9f882e71ed65f0ffdc65Mark Andrews# - If an existing entry in minor_perm is having its
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# attributes e.g. permissions, ownership changed,
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews# add it to the list produced by make_chattr_list below.
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# - If an existing entry must be deleted, add it to
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews# the list produced by make_delete_list below.
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
c069a20053d41ae299eb9457e50ea44ae9f73ed2Mark Andrews# - If a new entry must be added to the file, add it to the
ed178efa9ab8f813538fce4ff603b81ded9f1799Mark Andrews# list produced by make_add_list.
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews# - If a new entry is being added to minor_perm, but there
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# may already be devices of that name on the system (e.g.
3f6174bffe227be44e241a29d186add00c032ff6Mark Andrews# we used the system default permissions in a previous release),
1eb1e1e838d2ea00b166c918bf50764a95826be8Mark Andrews# and those old devices now need to have their attributes changed,
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# add it to the make_chattr_list AND the make_add_list lists
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews#
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews#
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# If an entry in /etc/minor_perm needs to have its attributes
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# changed, identify the entry in the list copied to /etc/chattr.$$
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# by this function. The fields are:
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson#
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews# <device>:<minor> <old_attrs> <new_attrs> <optional list of logical
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews# devices whose attributes
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson# will need to be changed>
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# where an <attribute list> := <perm> <user> <group>
26a77b80bb7ee886c6fa704348d5e80a011d8811Mark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# NOTE: this list should also contain entries for nodes that previously
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews# were not in /etc/minor_perm (which means the default mode of 600,
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# owner/group == root/sys), but now have an entry
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
62ee2c9f460d2e2e45dcf1abc8b4b4a4a43f5618Mark Andrewsmake_chattr_list()
e086341ea57e618a60c9f166b95daee1fab71b3bMark Andrews{
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewscat > /tmp/chattr.$$ << EOF
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsvol:volctl 0600 root sys 0666 root sys /dev/volctl
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsclone:llc1 0600 root sys 0666 root sys /dev/llc1
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewsclone:sound,sbpro 0666 root sys 0600 root sys /dev/sound/*
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewssbpro:* 0666 root sys 0600 root sys /dev/sound/*
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewslog:conslog 0620 root sys 0666 root sys /dev/conslog
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonsy:tty 0666 root sys 0666 root tty /dev/tty
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrewsicmp:icmp 0600 root sys 0666 root sys /dev/rawip
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrewsicmp6:icmp6 0600 root sys 0666 root sys /dev/rawip6
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonip:ip 0660 root sys 0666 root sys /dev/ip
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewsip6:ip6 0660 root sys 0666 root sys /dev/ip6
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonrts:rts 0660 root sys 0666 root sys /dev/rts
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrewskeysock:keysock 0600 root sys 0666 root sys /dev/keysock
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonipsecah:ipsecah 0600 root sys 0666 root sys /dev/ipsecah
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrewsipsecesp:ipsecesp 0600 root sys 0666 root sys /dev/ipsecesp
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrewsspdsock:spdsock 0600 root sys 0666 root sys /dev/spdsock
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewssad:admin 0600 root sys 0666 root sys /dev/sad/admin
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrewsfssnap:ctl 0600 root sys 0666 root sys /dev/fssnapctl
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrewsfssnap:* 0600 root sys 0640 root sys /dev/fssnap/*
dd9ad704c3800e3ab07ede8595871eac79984871Mark Andrewsclone:dnet 0600 root sys 0666 root sys /dev/dnet
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrewsdnet:* 0600 root sys 0666 root sys /dev/dnet*
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrewsclone:elxl 0600 root sys 0666 root sys /dev/elxl
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewselxl:* 0600 root sys 0666 root sys /dev/elxl*
ab81f57ca0c3addfec3df3babdcea9644757cf23Mark Andrewsclone:iprb 0600 root sys 0666 root sys /dev/iprb
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrewsiprb:* 0600 root sys 0666 root sys /dev/iprb*
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:pcelx 0600 root sys 0666 root sys /dev/pcelx
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewspcelx:* 0600 root sys 0666 root sys /dev/pcelx*
413988c8166976498250c0ebb2e3a645d0366bd3Mark Andrewsclone:spwr 0600 root sys 0666 root sys /dev/spwr
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsspwr:* 0600 root sys 0666 root sys /dev/spwr*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewscpc:* 0600 root sys 0666 root sys /devices/pseudo/cpc*
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsipf:* 0600 root sys 0666 root sys /dev/ipf
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewspfil:* 0600 root sys 0666 root sys /dev/pfil
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsscsi_vhci:devctl 0600 root sys 0666 root sys /devices/scsi_vhci:devctl
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsfbt:fbt 0600 root sys 0644 root sys /dev/dtrace/provider/fbt
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewslockstat:* 0600 root sys 0644 root sys /dev/dtrace/provider/lockstat
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsprofile:profile 0600 root sys 0644 root sys /dev/dtrace/provider/profile
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewssdt:sdt 0600 root sys 0644 root sys /dev/dtrace/provider/sdt
642e0716c8b4ab82ebc8e60f94c9e897ee89f19aMark Andrewssystrace:systrace 0600 root sys 0644 root sys /dev/dtrace/provider/systrace
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:bge 0600 root sys 0666 root sys /dev/bge
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:ixgbe 0600 root sys 0666 root sys /dev/ixgbe
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:rge 0600 root sys 0666 root sys /dev/rge
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:xge 0600 root sys 0666 root sys /dev/xge
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:nge 0600 root sys 0666 root sys /dev/nge
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrewsclone:chxge 0600 root sys 0666 root sys /dev/chxge
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:pcn 0600 root sys 0666 root sys /dev/pcn
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:rtls 0600 root sys 0666 root sys /dev/rtls
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:ath 0600 root sys 0666 root sys /dev/ath
d3a3e690ab1f87fa02b3fa77be5ddea5c1fe0cd4Mark Andrewsclone:ipw 0600 root sys 0666 root sys /dev/ipw
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:iwi 0600 root sys 0666 root sys /dev/iwi
d56e188030368b835122d759ebbf8d9613c166f4Mark Andrewsclone:iwk 0600 root sys 0666 root sys /dev/iwk
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:pcwl 0600 root sys 0666 root sys /dev/pcwl
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:pcan 0600 root sys 0666 root sys /dev/pcan
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:ral 0600 root sys 0666 root sys /dev/ral
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:rtw 0600 root sys 0666 root sys /dev/rtw
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:ural 0600 root sys 0666 root sys /dev/ural
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:wpi 0600 root sys 0666 root sys /dev/wpi
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrewsclone:afe 0600 root sys 0666 root sys /dev/afe
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:dmfe 0600 root sys 0666 root sys /dev/dmfe
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:mxfe 0600 root sys 0666 root sys /dev/mxfe
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsbge:* 0600 root sys 0666 root sys /dev/bge*
ed178efa9ab8f813538fce4ff603b81ded9f1799Mark Andrewsixgbe:* 0600 root sys 0666 root sys /dev/ixgbe*
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsrge:* 0600 root sys 0666 root sys /dev/rge*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsxge:* 0600 root sys 0666 root sys /dev/xge*
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrewsnge:* 0600 root sys 0666 root sys /dev/nge*
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewse1000g:* 0666 root root 0666 root sys /dev/e1000g*
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewschxge:* 0600 root sys 0666 root sys /dev/chxge*
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrewspcn:* 0600 root sys 0666 root sys /dev/pcn*
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsrtls:* 0600 root sys 0666 root sys /dev/rtls*
dd9ad704c3800e3ab07ede8595871eac79984871Mark Andrewsath:* 0600 root sys 0666 root sys /dev/ath*
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsipw:* 0600 root sys 0666 root sys /dev/ipw*
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrewsiwi:* 0600 root sys 0666 root sys /dev/iwi*
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrewsiwk:* 0600 root sys 0666 root sys /dev/iwk*
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrewspcwl:* 0600 root sys 0666 root sys /dev/pcwl*
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewspcan:* 0600 root sys 0666 root sys /dev/pcan*
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsral:* 0600 root sys 0666 root sys /dev/ral*
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrewsrtw:* 0600 root sys 0666 root sys /dev/rtw*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonural:* 0600 root sys 0666 root sys /dev/ural*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewswpi:* 0600 root sys 0666 root sys /dev/wpi*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsafe:* 0600 root sys 0666 root sys /dev/afe*
62ee2c9f460d2e2e45dcf1abc8b4b4a4a43f5618Mark Andrewsdmfe:* 0600 root sys 0666 root sys /dev/dmfe*
1eb1e1e838d2ea00b166c918bf50764a95826be8Mark Andrewsmxfe:* 0600 root sys 0666 root sys /dev/mxfe*
068a66979695c77359e7a9181bb3f831c965b21cMark AndrewsEOF
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews}
ea206aebcafe1ed5d470dd99daab9a1cedc81c7cMark Andrews
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson#
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews# If an entry in /etc/minor_perm needs to be deleted, identify
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrews# the entry in the list copied to /etc/delete.$$ by this function.
ca12f7f4cf72e2368ee946f3eb4915ab73576cdcMark Andrews# The fields are:
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews#
1eb1e1e838d2ea00b166c918bf50764a95826be8Mark Andrews# <device>:<minor> <optional list of logical devices to be deleted>
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrews
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsmake_delete_list()
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews{
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrewscat > /tmp/delete.$$ << EOF
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsrip:rawip
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrewsconsfb:consfb
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafssonclone:el
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrewsclone:elx
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:sle
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsclone:sie
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:sp
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:ip
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:icmp
ed178efa9ab8f813538fce4ff603b81ded9f1799Mark Andrewsclone:udp
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:tcp
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:rts
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrewsclone:arp
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsclone:ipsecah
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:ipsecesp
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:keysock
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:smc
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewsclone:tr
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrewselx:*
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafssonwin:*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewscmtp:*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsprofile:profile
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsasy:[a-z]
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsasy:[a-z],cu
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewsi2o_bs:*
91216cff91b34c9ff6e846dc23f248219cafe660Andreas GustafssonEOF
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews}
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews#
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson# If an entry needs to be added to /etc/minor_perm, add the first
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews# field of the entry to the list created by this function. The
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# remainder of the entry will be extracted from the /etc/minor_perm
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews# in the package being installed, so it is not necessary to supply
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# it here.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
282e38d96feb488fddbbc0b0409491094786977fMark Andrewsmake_add_list()
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews{
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewscat > /tmp/add.$$ << EOF
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsvol:volctl
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:llc1
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewstnf:tnfctl
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewstnf:tnfmap
abf32d940f8f674b3971ef41b306a01b3da8d2cfMark Andrewsst:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpm:*
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsdevinfo:devinfo
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonopeneepr:openprom
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonwc:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonip:ip
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonip6:ip6
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonicmp:icmp
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonicmp6:icmp6
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonudp:udp
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonudp6:udp6
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtontcp:tcp
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtontcp6:tcp6
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonrts:rts
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonarp:arp
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpoll:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpool:pool
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpool:poolctl
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoncpc:shared
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsysmsg:msglog
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsysmsg:sysmsg
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonipsecah:ipsecah
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonipsecesp:ipsecesp
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonkeysock:keysock
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonspdsock:spdsock
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondevinfo:devinfo,ro
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonlofi:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonlofi:ctl
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsgen:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonfssnap:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonfssnap:ctl
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonrsm:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonrandom:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonmm:allkmem
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:dnet
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondnet:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:elxl
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonelxl:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:ibd
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonibd:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:iprb
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoniprb:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:pcelx
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpcelx:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:spwr
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonspwr:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsysevent:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonramdisk:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonramdisk:ctl
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoncryptoadm:cryptoadm
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoncrypto:crypto
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondtrace:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonfasttrap:fasttrap
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrewsipf:*
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrewspfil:*
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrewsbl:*
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonsctp:*
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonsctp6:*
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonvni:*
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtoncpuid:self
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonclone:bge
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:ixgbe
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:rge
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonclone:xge
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonclone:nge
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellingtonclone:e1000g
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrewsclone:chxge
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:pcn
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrewsclone:rtls
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrewsclone:ath
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:ipw
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:iwi
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:iwk
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonclone:pcwl
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrewsclone:pcan
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:ral
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:rtw
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:ural
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:wpi
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:afe
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsclone:dmfe
68baa2d193672c482b7ea07ece349e7b1ceb96e6Mark Andrewsclone:mxfe
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsbge:*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsixgbe:*
67a0e14fa9c3c160116f0671f4ac5874306b1150Mark Andrewsrge:*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsxge:*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewsnge:*
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrewse1000g:*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewschxge:*
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrewspcn:*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsrtls:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonath:*
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewsipw:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoniwi:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoniwk:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpcwl:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonpcan:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonral:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonrtw:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonural:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonwpi:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonafe:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondmfe:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonmxfe:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonbmc:bmc
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondld:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonaggr:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsmbios:smbios
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonzfs:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonzfs:zfs
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonscsi_vhci:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonkssl:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonfbt:fbt
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonprofile:profile
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsdt:sdt
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrewssoftmac:*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewssystrace:systrace
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonlx_ptm:lx_ptmajor
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrewslx_systrace:*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsphysmem:*
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsasy:*
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrewsasy:*,cu
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsucode:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonacpi_drv:*
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrewssmbsrv:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonvscan:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonnsmb:*
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian WellingtonEOF
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington}
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian WellingtonPATH="/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonexport PATH
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Internal routine to create a sed script which can be used to
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# escape all shell globbing metacharacters in a path.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrewscreate_esc_sedscript()
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington{
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoncat > /tmp/esc.sed.$$ << EOF
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtons/\*/\\\\*/g
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtons/\?/\\\\?/g
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtons/\[/\\\\[/g
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtons/\]/\\\\]/g
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian WellingtonEOF
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington}
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Internal routine to convert an entry in a /tmp/chwhatever.$$ file to
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# an appropriately escaped pattern which can be used to grep into minor_perm.
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonentry2pattern()
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington{
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # the first argument is the 'key' field from the change file.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # entries can contain shell globbing characters to match
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # several devices - hence all the palaver below.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington printf '%s' `echo "$1" | sed \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington -e 's/\*/\\\\*/g' -e 's/\?/\\\\?/g' \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington -e 's/\./\\\\./g' -e 's/\[/\\\\[/g' \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews -e 's/\]/\\\\]/g'`
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews shift
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # the remaining optional arguments are tokens separated by white-space
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews if [ $# = 0 ] ; then
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews printf '[ \t]'
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews else
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews while [ -n "$1" ]
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews do
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews printf '[ \t][ \t]*%s' $1
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews shift
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews done
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington printf '[ \t]*$'
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews fi
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington}
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonwhile read src dest
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondo
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if [ ! -f $dest ] ; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington cp $src $dest
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington else
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington rm -f /tmp/*.$$
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington create_esc_sedscript
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington make_chattr_list
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington make_delete_list
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington make_add_list
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Process the list of devices whose attributes are to be
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # changed. Find those that actually need to be
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # applied to the file. For each change that needs
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # to be applied, add an entry for it to the sed
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # script that will eventually be applied to the
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # currently-installed /etc/minor_perm file. Also,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # add an entry to the /tmp/chdevs.$$ file, which
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # contains the list of logical names of devices
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews # whose permissions need to be changed.
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews cat /tmp/chattr.$$ | \
abf32d940f8f674b3971ef41b306a01b3da8d2cfMark Andrews while read key oldp oldu oldg newp newu newg chdevs
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews do
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews do_chdevs=no
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews #
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews # First determine whether the device entry
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # is already in the file, but with the old
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # permissions. If so, the entry needs to be
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # modified and the devices in the chdevs list
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # need to have their permissions and ownerships
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews # changed.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews grepstr=`entry2pattern "${key}" $oldp $oldu $oldg`
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews if grep "$grepstr" $dest > /dev/null 2>&1; then
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews echo "s/${grepstr}/$key $newp $newu $newg/" \
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington >> /tmp/sedscript.$$
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington do_chdevs=yes
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington fi
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews #
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington # Now determine whether the device entry is
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews # in the file at all. If not, it is a new
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # entry, but there may already be devices
2bef3713093349af52ba61eaab07adf3207da873Mark Andrews # on the system whose permissions need to
2bef3713093349af52ba61eaab07adf3207da873Mark Andrews # be changed.
2bef3713093349af52ba61eaab07adf3207da873Mark Andrews #
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews grepstr=`entry2pattern "${key}"`
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews grep "${grepstr}" $dest > /dev/null 2>&1
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews if [ $? != 0 ] ; then
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews do_chdevs=yes
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews fi
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews if [ $do_chdevs = yes -a "$chdevs" != "" ] ; then
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews xchdevs=`echo "$chdevs" | \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews sed -f /tmp/esc.sed.$$`
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews for m in $xchdevs ; do
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews echo "$m" $oldp $oldu $oldg \
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews $newp $newu $newg >> /tmp/chdevs.$$
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews done
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews fi
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews done
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # sort the "change attributes" list
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews if [ -s /tmp/chdevs.$$ ] ; then
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews sort -u /tmp/chdevs.$$ > /tmp/tmp.$$
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews mv /tmp/tmp.$$ /tmp/chdevs.$$
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington fi
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews #
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # Process the list of devices to be deleted.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Find those that actually need to be deleted
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # from the file. For each entry to be deleted,
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # add an entry for it to the sed script that will
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # eventually be applied to the currently-installed
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # /etc/minor_perm file. Also, add an entry to the
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # /tmp/deldevs.$$ file, which contains the list of
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # logical names of devices to be deleted.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews #
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews cat /tmp/delete.$$ | while read key deldevs
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews do
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews grepstr=`entry2pattern "${key}"`
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews if grep "$grepstr" $dest > /dev/null 2>&1; then
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews echo "/${grepstr}/d" >> /tmp/sedscript.$$
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews if [ "$deldevs" != "" ] ; then
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews xdeldevs=`echo "$deldevs" | \
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews sed -f /tmp/esc.sed.$$`
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews for m in $xdeldevs ; do
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews echo "$m" >> /tmp/deldevs.$$
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews done
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews fi
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews fi
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews done
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews if [ -s /tmp/deldevs.$$ ] ; then
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews sort -u /tmp/deldevs.$$ > /tmp/tmp.$$
3a9a66b32adf379e680d18e92428058910880119Mark Andrews mv /tmp/tmp.$$ /tmp/deldevs.$$
48b492d73ae5328c5efef4b9e0f22063e0ab058aMark Andrews fi
48b492d73ae5328c5efef4b9e0f22063e0ab058aMark Andrews
48b492d73ae5328c5efef4b9e0f22063e0ab058aMark Andrews #
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # Apply the sed script possibly built above to the
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # currently-installed /etc/minor_perm file.
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
3a9a66b32adf379e680d18e92428058910880119Mark Andrews if [ -s /tmp/sedscript.$$ ] ; then
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews sed -f /tmp/sedscript.$$ $dest > /tmp/tmp.$$
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews cp /tmp/tmp.$$ $dest
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington fi
ca9a8f6d0b0f2a400a96f868193471510364336fMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # For all entries in minor_perm whose attributes had
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # to be corrected, correct the relevant attributes of the
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # already-existing devices that correspond to those
3a9a66b32adf379e680d18e92428058910880119Mark Andrews # entries.
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews #
2da2220fe7af2c45724b50b0187523b1fab0cf08Rob Austein if [ -s /tmp/chdevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews "$PKG_INSTALL_ROOT" != "/" ] ; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington cat /tmp/chdevs.$$ |\
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews while read device oldp oldu oldg newp newu newg
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews do
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews #
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # Note that we take pains -only- to change
3a9a66b32adf379e680d18e92428058910880119Mark Andrews # the permission/ownership of devices that
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # have kept their original permissions.
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington for dev in $PKG_INSTALL_ROOT/$device; do
3a9a66b32adf379e680d18e92428058910880119Mark Andrews find $dev -follow -perm $oldp -exec \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington chmod $newp $dev \; >/dev/null 2>&1
3a9a66b32adf379e680d18e92428058910880119Mark Andrews find $dev -follow -user $oldu -exec \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews chown $newu $dev \; >/dev/null 2>&1
3a9a66b32adf379e680d18e92428058910880119Mark Andrews find $dev -follow -group $oldg -exec \
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews chgrp $newg $dev \; >/dev/null 2>&1
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews done
abf32d940f8f674b3971ef41b306a01b3da8d2cfMark Andrews done
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews fi
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews # For all entries in minor_perm that were deleted,
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews # remove the /dev entries that point to device nodes
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # that correspond to those entries.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews if [ -s /tmp/deldevs.$$ -a "$PKG_INSTALL_ROOT" != "" -a \
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "$PKG_INSTALL_ROOT" != "/" ] ; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington cat /tmp/deldevs.$$ | while read device
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews do
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews rm -f $PKG_INSTALL_ROOT/$device
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington done
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews fi
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews cat /tmp/add.$$ | while read key
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews do
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews grepstr=`entry2pattern "${key}"`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington grep "$grepstr" $dest > /dev/null 2>&1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if [ $? != 0 ] ; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington grep "$grepstr" $src >> $dest
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews fi
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews done
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews rm -f /tmp/*.$$
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews fi
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsdone
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrewsexit 0
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington