標準 Solaris システムの場合と同じく、Trusted Solaris システムのブート時に実行されるコマンドは、管理アクションによって追加したり、もしくは変更したりすることが可能です。基本的な動作については、『Solaris のシステム管理 (第 1 巻)』の実行制御スクリプトに関する記述、および init.d(4) のマニュアルページに説明されています。システムサービスを開始するスクリプトに付ける番号に関するガイドラインについては、各 /etc/rcn.d 内のREADME ファイルを参照してください。次節「前提知識」にも簡単な説明があります。
以下の節では、システムのブート時に起動されるサービスが必要とする Trusted Solaris の拡張セキュリティ属性を提供するために、セキュリティ管理者役割が行わなければならない事項について説明します。このようなサービスは、特権の継承、特定の機密ラベルや ADMIN_LOW
以外の認可上限を使った起動、スーパーユーザー以外の UID や GIDの 割り当てなどを行う必要があります。詳細については、「デフォルトの Trusted Solaris ブートスクリプト」、「新しい Trusted Solaris ブートスクリプト」、「ブート時に実行するコマンドに拡張セキュリティ属性を使用するかどうかを指定するには」を参照してください。
ブート時に、各 /sbin/rcn スクリプトは、それぞれに対応する /etc/rcn.d ディレクトリに含まれている一連のスクリプトを実行します。これらの実行制御スクリプト名とそれに対応するディレクトリ名に付けられている番号 n は、実行レベルを表しています。
/etc/rcn.d ディレクトリに含まれている一連のスクリプトは、/etc/init.d ディレクトリに実際に置かれているスクリプトに対するハードリンクになっています。たとえば、次の例に示すように、/etc/rc0.d、rc1.d、rc2.d ディレクトリには、それぞれ異なる名前を持つ sendmail スクリプトが 1 つずつ存在しますが、これらは実際にはいずれも /etc/initd.d/sendmail スクリプトへのハードリンクになっています 。
/etc/rcn.d ディレクトリ内に存在する /etc/initd.d/sendmail へのリンク
/etc/rc0.d/K57sendmail /etc/rc1.d/K57sendmail /etc/rc2.d/S88sendmail |
/etc/rcn.d ディレクトリ内のスクリプトのうち、起動オプションで実行される必要があるものには接頭辞 S で始まる名前が付けられており、停止オプションで実行される必要があるものには接頭辞Kで始まる名前が付けられています。上記の図に示すように、接頭辞 K で始まる名前の sendmail ファイルが rc0.d および rc1.d に置かれている場合、実行レベルが 0 および 1 に移行すると sendmail(1M) は停止します。同様に、接頭辞 S で始まる名前の sendmail ファイルが rc2.d に置かれている場合、実行レベルが 2 に移行すると sendmail(1M) は起動されます。
/etc/init.d に新しいスクリプトをインストールした場合、セキュリティ管理者役割は以下のことを行います。
ブートシーケンスのどの時点でスクリプトを起動または停止するかを決定する
1 つまたは複数の /etc/rcn.d ディレクトリ内に、/etc/init.d 内のそのスクリプトへのリンクを作成する
起動用か停止用かに応じて、適切な接頭辞を含む名前を対象となるファイルに付ける
特定の実行レベルへの移行時に、そのスクリプトが実行される順番が判るように、適切な番号を含む名前を対象となるファイルに付ける
新しいスクリプトをブートシーケンスのどの時点で実行するかによって、スクリプトにより実行されるコマンドをローカルファイルに置くかそれとも NIS+プロファイルデータベースに置くかを決定し、「ネームサービス (Naming Service)」メニューで「なし (none)」または「NIS+」のどちらを選択します。詳細については、「ブート時に実行するコマンドに拡張セキュリティ属性を使用するかどうかを指定するには」を参照してください。
Trusted Solaris システムでは、起動されるサービスが特権や拡張セキュリティ属性を必要とすることがあるために、/sbin/rcn スクリプトが sh(1)(Bourneシェル)ではなく、 sysh(1M)(システムシェル)を使うように変更されています。デフォルトの Trusted Solaris システムでは、ブート時に起動されるコマンドのための拡張セキュリティ属性を指定するようにブート実行プロファイルが設定されています。/sbin/rcn スクリプトでは、/bin/sysh が引数としてのプロファイル名なしで使われていますが、これは同スクリプトがデフォルトでブートスクリプトを参照するようになっているためです。
boot プロファイルや /sbin/rcn スクリプトは変更しないでください。
各サイトでブート時に実行するコマンドを追加する必要がある場合、セキュリティ管理者役割は #!/sbin/sysh で始まるシステムシェルスクリプトを作成し、そのスクリプトでローカルに作成したブート時の実行プロファイルを指定します(これを行うには setprof コマンドを使います)。セキュリティ管理者役割はブート時実行プロファイルを作成して、セキュリティ属性を必要とするコマンドに割り当てます。次の例に示すように、このシステムシェルブートスクリプトの先頭行には #!/sbin/sysh が、2 番目の行には setprof local_boot_profile コマンドが含まれています。
#!/sbin/sysh setprof local_boot_profile |
システムシェル (sysh) は、local_boot_profile を参照することにより、スクリプトによって起動されるコマンドにどのような拡張セキュリティ属性が割り当てられているかを判断します。たとえば、コマンドが ADMIN_LOW
以外の機密ラベルや認可上限を必要とする場合、プロファイルは、そのコマンド用に機密ラベル (min_SL フィールド) と認可上限 (max_SL フィールド)を設定する必要があります。さらに、コマンドがスーパーユーザー (root) の UID や別の GID を必要とする場合、プロファイルはこれを指定しなければなりません。
セキュリティ管理者役割は、「ブート時に実行するコマンドに拡張セキュリティ属性を使用するかどうかを指定するには」の手順に従って、スクリプトによって実行されるコマンドの名前を持つ新しいプロファイルを作成する必要があります。また、sysh の setprof オプションを使用して新しいプロファイルを参照するように指定し、スクリプト内で sysh シェルを使用する必要があります。