ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Trusted Extensions 開発者ガイド Oracle Solaris 10 1/13 Information Library (日本語) |
1. Trusted Extensions API およびセキュリティーポリシー
9. Solaris Trusted Extensions ラベル API のための試験的な Java バインディング
機密ラベルは、ラベル付きゾーンからや他のプロセスから取得されます。ユーザーは、現在のゾーンの現在の機密ラベルでのみプロセスを開始できます。
プロセスでオブジェクトが作成される場合、そのオブジェクトは呼び出し元プロセスの機密ラベルを継承します。setlabel コマンドまたは setflabel() ルーチンを使用して、ファイルシステムオブジェクトの機密ラベルを設定できます。setlabel(1) および setflabel(3TSOL) のマニュアルページを参照してください。
次のスクリプト runwlabel は、指定するプログラムを指定するラベル付きゾーンで実行します。このスクリプトは、大域ゾーンから実行する必要があります。
例 2-1 runwlabel スクリプト
runwlabel スクリプトは最初に、指定されたプログラムを実行するラベル付きゾーンの機密ラベルを取得する必要があります。このスクリプトは、getzonepath コマンドを使用して、コマンド行に指定されたラベルからゾーンパスを取得します。getzonepath(1)のマニュアルページを参照してください。
次に、runwlabel スクリプトは zoneadm コマンドを使用して、getzonepath コマンドで取得されたゾーンパスに関連付けられているゾーン名を見つけます。zoneadm(1M) のマニュアルページを参照してください。
最後に、runwlabel スクリプトは zlogin コマンドを使用して、指定されたラベルに関連付けられているゾーンで、指定されたプログラムを実行します。zlogin(1) のマニュアルページを参照してください。
Confidential: Internal Use Only ラベルに関連付けられているゾーンで zonename コマンドを実行するには、大域ゾーンから runwlabel スクリプトを実行します。例:
machine1% runwlabel "Confidential : Internal Use Only" zonename
次に、runwlabel スクリプトのソースを示します。
#!/sbin/sh # # Usage: # runwlabel "my-label" my-program # [ ! -x /usr/sbin/zoneadm ] && exit 0 # SUNWzoneu not installed PATH=/usr/sbin:/usr/bin; export PATH # Get the zone path associated with the "my-label" zone # Remove the trailing "/root" zonepath=`getzonepath "$1" | sed -e 's/\/root$//'` progname="$2" # Find the zone name that is associated with this zone path for zone in `zoneadm list -pi | nawk -F: -v zonepath=${zonepath} '{ if ($4 == zonepath) { print $2 } }'`; do # Run the specified command in the matching zone zlogin ${zone} ${progname} done exit
次のスクリプト runinzone は、ゾーンがブートされていない場合でも、指定されたゾーンでプログラムを実行します。このスクリプトは、大域ゾーンから実行する必要があります。
例 2-2 runinzone スクリプト
このスクリプトは最初に、指定されたゾーンをブートし、次に zlogin コマンドを使用して、指定されたゾーンで waitforzone スクリプトを実行します。
waitforzone スクリプトは、ローカルゾーンのオートマウンタが起動するまで待機してから、指定されたプログラムを指定されたユーザーとして実行します。
public ゾーンで /usr/bin/xclock コマンドを実行するには、大域ゾーンから次を実行します。
machine1% runinzone public terry /usr/bin/xclock
次に、runinzone スクリプトのソースを示します。
#!/sbin/ksh zonename=$1 user=$2 program=$3 # Boot the specified zone zoneadm -z ${zonename} boot # Run the command in the specified zone zlogin ${zonename} /bin/demo/waitforzone ${user} ${program} ${DISPLAY}
runinzone スクリプトは、次のスクリプト waitforzone を呼び出します。
#!/bin/ksh user=$1 program=$2 display=$3 # Wait for the local zone automounter to come up # by checking for the auto_home trigger being loaded while [ ! -d /home/${user} ]; do sleep 1 done # Now, run the command you specified as the specified user su - ${user} -c "${program} -display ${display}"