xref: /illumos-gate/usr/src/cmd/tsol/zones/zoneunshare.sh (revision 132157d7fb25c120ae1deca2a65fa7c78e8fcfd0)
1#!/sbin/sh
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License (the "License").
7# You may not use this file except in compliance with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23# Use is subject to license terms.
24#
25#ident	"%Z%%M%	%I%	%E% SMI"
26#
27# zoneunshare  -- unshare zone resources
28
29# Processes the specified sharetab file and unshare
30# all entries shared by the specfied zone
31
32USAGE="zoneunshare -z zonename [- | file]"
33set -- `getopt z: $*`
34if [ $? != 0 ]		# invalid options
35	then
36	echo $USAGE >&2
37	exit 1
38fi
39for i in $*		# pick up the options
40do
41	case $i in
42	-z)  zonename=$2; shift 2;;
43	--)  shift; break;;
44	esac
45done
46
47zoneattr=`/usr/sbin/zoneadm -z $zonename list -p 2> /dev/null`
48if [ $? -ne 0 ]		# invalid zone
49	then
50	echo $USAGE >&2
51	exit 1
52fi
53
54prefix=`echo $zoneattr | cut -d ":" -f4`
55rootpath=$prefix/root
56
57if [ $# -gt 1 ]		# accept only one argument
58then
59	echo $USAGE >&2
60	exit 1
61elif [ $# = 1 ]
62then
63	case $1 in
64	-)	infile=;;	# use stdin
65	*)	infile=$1;;	# use a given source file
66	esac
67else
68	infile=/etc/dfs/sharetab	# default
69fi
70
71# Run unshare for each resource in its own shell
72
73while read line				# get complete lines
74do
75	echo $line
76done < $infile |
77	`egrep "^$rootpath"|nawk '{ print "/usr/sbin/unshare " $1 ";" }'|/sbin/sh`
78