xref: /illumos-gate/usr/src/lib/libsecdb/svc-rbac (revision c11c3631128bd03ca6eb2504d1d2c1b5ec1c130f)
106d0f3f3SCasper H.S. Dik#! /usr/bin/sh
206d0f3f3SCasper H.S. Dik#
306d0f3f3SCasper H.S. Dik# CDDL HEADER START
406d0f3f3SCasper H.S. Dik#
506d0f3f3SCasper H.S. Dik# The contents of this file are subject to the terms of the
606d0f3f3SCasper H.S. Dik# Common Development and Distribution License (the "License").
706d0f3f3SCasper H.S. Dik# You may not use this file except in compliance with the License.
806d0f3f3SCasper H.S. Dik#
906d0f3f3SCasper H.S. Dik# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1006d0f3f3SCasper H.S. Dik# or http://www.opensolaris.org/os/licensing.
1106d0f3f3SCasper H.S. Dik# See the License for the specific language governing permissions
1206d0f3f3SCasper H.S. Dik# and limitations under the License.
1306d0f3f3SCasper H.S. Dik#
1406d0f3f3SCasper H.S. Dik# When distributing Covered Code, include this CDDL HEADER in each
1506d0f3f3SCasper H.S. Dik# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1606d0f3f3SCasper H.S. Dik# If applicable, add the following below this CDDL HEADER, with the
1706d0f3f3SCasper H.S. Dik# fields enclosed by brackets "[]" replaced with your own identifying
1806d0f3f3SCasper H.S. Dik# information: Portions Copyright [yyyy] [name of copyright owner]
1906d0f3f3SCasper H.S. Dik#
2006d0f3f3SCasper H.S. Dik# CDDL HEADER END
2106d0f3f3SCasper H.S. Dik#
2206d0f3f3SCasper H.S. Dik
2306d0f3f3SCasper H.S. Dik#
24*c11c3631SJoep Vesseur# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
2506d0f3f3SCasper H.S. Dik# Use is subject to license terms.
2606d0f3f3SCasper H.S. Dik#
2706d0f3f3SCasper H.S. Dik
2806d0f3f3SCasper H.S. Dik. /lib/svc/share/smf_include.sh
2906d0f3f3SCasper H.S. Dik
3006d0f3f3SCasper H.S. Dikfiles='/etc/user_attr /etc/security/auth_attr /etc/security/exec_attr
3106d0f3f3SCasper H.S. Dik    /etc/security/prof_attr'
3206d0f3f3SCasper H.S. Dik
3306d0f3f3SCasper H.S. DikPKGINST=
3406d0f3f3SCasper H.S. Dikexport PKGINST
3506d0f3f3SCasper H.S. Dik
3606d0f3f3SCasper H.S. Dikirbac=/usr/sadm/install/scripts/i.rbac
3706d0f3f3SCasper H.S. Dik
3806d0f3f3SCasper H.S. Dikif [ ! -x $irbac ]
3906d0f3f3SCasper H.S. Dikthen
4006d0f3f3SCasper H.S. Dik	echo "${irbac}: not found."
4106d0f3f3SCasper H.S. Dik	exit $SMF_EXIT_ERR_FATAL
4206d0f3f3SCasper H.S. Dikfi
4306d0f3f3SCasper H.S. Dik
4406d0f3f3SCasper H.S. Dikcase "$1" in
4506d0f3f3SCasper H.S. Dikstart|refresh)
4606d0f3f3SCasper H.S. Dik	;;
4706d0f3f3SCasper H.S. Dikstop)
4806d0f3f3SCasper H.S. Dik	exit $SMF_EXIT_OK;;
4906d0f3f3SCasper H.S. Dik*)
5006d0f3f3SCasper H.S. Dik	echo "Usage: $0 { start | refresh | stop }"
5106d0f3f3SCasper H.S. Dik	exit $SMF_EXIT_ERR_FATAL;;
5206d0f3f3SCasper H.S. Dikesac
5306d0f3f3SCasper H.S. Dik
5406d0f3f3SCasper H.S. Dikfor f in $files
5506d0f3f3SCasper H.S. Dikdo
5606d0f3f3SCasper H.S. Dik	d=${f}.d
5706d0f3f3SCasper H.S. Dik	if [ ! -d ${d} ]
5806d0f3f3SCasper H.S. Dik	then
5906d0f3f3SCasper H.S. Dik		# No directory, nothing to do
6006d0f3f3SCasper H.S. Dik		continue
6106d0f3f3SCasper H.S. Dik	fi
62*c11c3631SJoep Vesseur	# cache user/owner of file to update
63*c11c3631SJoep Vesseur	ownergroup=`ls -ln $f | awk '{printf("%s:%s\n", $3, $4);'}`
6406d0f3f3SCasper H.S. Dik	#
6506d0f3f3SCasper H.S. Dik	# List all the files in the directory and the destination file
6606d0f3f3SCasper H.S. Dik	# in the order of their timestamp.  Most recent files are
6706d0f3f3SCasper H.S. Dik	# displayed first.  When we find the destination file, we're
6806d0f3f3SCasper H.S. Dik	# done as the rest of the files are older and they are already
6906d0f3f3SCasper H.S. Dik	# incorporated.
7006d0f3f3SCasper H.S. Dik	#
71*c11c3631SJoep Vesseur	update=0
7206d0f3f3SCasper H.S. Dik	for frag in `ls -t $f $d/* 2> /dev/null`
7306d0f3f3SCasper H.S. Dik	do
7406d0f3f3SCasper H.S. Dik		if [ "$frag" = "$f" ]
7506d0f3f3SCasper H.S. Dik		then
7606d0f3f3SCasper H.S. Dik			break
7706d0f3f3SCasper H.S. Dik		fi
7806d0f3f3SCasper H.S. Dik		if [ -f "$frag" ]
7906d0f3f3SCasper H.S. Dik		then
80*c11c3631SJoep Vesseur			update=1
8106d0f3f3SCasper H.S. Dik			echo $frag $f | $irbac
8206d0f3f3SCasper H.S. Dik		fi
8306d0f3f3SCasper H.S. Dik	done
84*c11c3631SJoep Vesseur	if [ $update -eq 1 ]
85*c11c3631SJoep Vesseur	then
86*c11c3631SJoep Vesseur		chown $ownergroup $f
87*c11c3631SJoep Vesseur	fi
8806d0f3f3SCasper H.S. Dikdone
8906d0f3f3SCasper H.S. Dik
9006d0f3f3SCasper H.S. Dikexit $SMF_EXIT_OK
91