この節では、SMF サービスの管理について説明します。
RBAC 権利プロファイルを使用して root アクセス権を付与していないユーザーに、一部の SMF サービスの管理を許可することができます。権利プロファイルには、そのユーザーが実行できるコマンドを定義します。SMF のために次のプロファイルが作成されています。
Service Management: サービスを追加、削除、または変更できます。
Service Operator: 再起動や再表示など、サービスインスタンスの状態の変更を要求できます。
承認については、smf_security(5) のマニュアルページを参照してください。権利プロファイルを割り当てる手順については、『Solaris のシステム管理 (セキュリティサービス)』の「ユーザーの RBAC プロパティーを変更する方法」を参照してください。
サービスを無効にするには、次の手順に従います。サービスの状態変化はサービス設定リポジトリ内に記録されます。サービスがいったん無効になると、その無効な状態はリブート後も維持されます。サービスを実行中の状態に戻す唯一の方法は、そのサービスを有効にすることです。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
無効にするサービスに依存するサービスの有無を確認します。
必要とするサービスがこのサービスに依存していた場合、このサービスを無効にできません。
# svcs -D FMRI |
サービスを無効にします。
# svcadm disable FMRI |
最初のコマンドの出力結果から、rlogin サービスに依存するサービスは存在しないことがわかります。この例の 2 番目のコマンドは、rlogin サービスを無効にしています。3 番目のコマンドの結果から、rlogin サービスインスタンスの状態が無効になっていることがわかります。
# svcs -D network/login:rlogin # svcadm disable network/login:rlogin STATE STIME FMRI # svcs network/login:rlogin STATE STIME FMRI disabled 11:17:24 svc:/network/login:rlogin |
サービスを有効にするには、次の手順に従います。サービスの状態変化はサービス設定リポジトリ内に記録されます。サービスがいったん有効になると、そのサービスの依存関係に問題がない限り、その有効な状態はシステムのリブート後も維持されます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
サービスの依存関係に問題がないか確認します。
依存するサービスが有効になっている場合、サービスの依存関係に問題はありません。そうでない場合は、svcadm enable -r FMRI を使用して、すべての依存関係を再帰的に有効にします。
# svcs -l FMRI|grep enabled |
サービスを有効にします。
# svcadm enable FMRI |
この例の 2 番目のコマンドは、rlogin サービスを有効にしています。3 番目のコマンドの結果から、rlogin サービスインスタンスの状態がオンラインになっていることがわかります。
# svcs -l network/login:rlogin|grep enabled enabled false # svcadm enable network/login:rlogin # svcs network/login:rlogin STATE STIME FMRI online 12:09:16 svc:/network/login:rlogin |
次のコマンドは rpcbind を有効にします。-t オプションは、サービスリポジトリを変更しないモードでサービスを一時的に起動します。このリポジトリにシングルユーザーモードで書き込むことはできません。-r オプションは、指定されたサービスのすべての依存関係を再帰的に有効にします。
# svcadm enable -rt rpc/bind |
設定が変更されたなどの理由により現在実行中のサービスを再起動する必要が生じた場合、サービスの停止時と起動時に個々のコマンドを入力することなく、サービスの再起動を行えます。サービスの無効化と有効化を別々に行う必要があるのは、サービスの無効化後かつ有効化前に変更を反映する必要がある場合だけです。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
特定のサービスを再起動します。
# svcadm restart FMRI |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
そのサービスに依存するプロセスのうち、停止していないものが存在しないかどうかを確認します。
通常、サービスインスタンスが保守状態になっている場合、そのインスタンスに関連付けられたすべてのプロセスが停止しています。しかしながら、処理を進める前にそのことを確認する必要があります。次のコマンドを実行すると、特定のサービスインスタンスに関連付けられたすべてのプロセスが一覧表示されます。その際、各プロセスの PID も表示されます。
# svcs -p FMRI |
(省略可能) 残っているプロセスをすべて強制終了します。
svcs コマンドで表示されたすべてのプロセスに対して、この手順を繰り返します。
# pkill -9 PID |
必要であれば、サービスの設定を修復します。
/var/svc/log 内の対応するサービスログファイルを開き、エラーが発生していないか確認します。
サービスを復元します。
# svcadm clear FMRI |
サービスの設定が間違っている場合、正常に起動した最後のスナップショットに戻すことで問題を解決できます。この手順では、console-login サービスの以前のスナップショットを使用します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
svccfg コマンドを実行します。
# svccfg svc:> |
修正するサービスインスタンスを選択します。
インスタンスを完全に定義した FMRI を使用する必要があります。短縮形は使えません。
svc:> select system/console-login:default svc:/system/console-login:default> |
利用可能なスナップショットの一覧を生成します。
svc:/system/console-login:default> listsnap initial running start svc:/system/console-login:default> |
戻し先として start スナップショットを選択します。
start スナップショットとは、サービスが正常に起動した最後のスナップショットのことです。
svc:/system/console-login:default> revert start svc:/system/console-login:default> |
svccfg を終了します。
svc:/system/console-login:default> quit # |
サービス設定リポジトリ内の情報を更新します。
この手順では、start スナップショットの設定情報に基づいてリポジトリを更新します。
# svcadm refresh system/console-login |
サービスインスタンスを再起動します。
# svcadm restart system/console-login |
プロファイルとは、SMF サービスの一覧とそれぞれを有効にするかどうかを示す XML ファイルのことです。プロファイルは、多くのサービスを一度に有効または無効にするために使用されます。すべてのサービスをプロファイルに含める必要はありません。効果的なプロファイルを作成するには、各プロファイルには有効または無効にする必要のあるサービスだけを含めるようにします。
プロファイルを作成します。
この例では、svccfg コマンドを使用して、現在のシステムで有効になっているサービスと無効になっているサービスを反映するプロファイルを作成します。代わりに、既存のプロファイルのコピーを作成し、それを編集することもできます。
# svccfg extract> profile.xml |
Oracle Solaris JumpStart を使用する場合、同一のシステムが多数ある場合、またはあとで復元できるようにシステムの設定のアーカイブを作成する場合は、この手順を使用して単一の SMF プロファイルを作成することができます。
profile.xml ファイルを編集して、必要な変更を加えます。
service_bundle 宣言内のプロファイルの名前を変更します。
この例では、profile という名前に変更しています。
# cat profile.xml ... <service_bundle type=`profile` name=`profile` xmIns::xi='http://www.w3.org/2003/XInclude' ... |
このプロファイルで管理すべきでないサービスをすべて削除します。
各サービスについて、サービスを説明する 3 行を削除します。各サービスの説明は、<service で始まり、</service で終わります。この例は、LDAP クライアントサービスの行を示しています。
# cat profile.xml ... <service name='network/ldap/client' version='1' type='service'> <instance name='default' enabled='true'/> </service> |
このプロファイルで管理すべきサービスをすべて追加します。
上記の 3 行の構文を使用して各サービスを定義する必要があります。
必要に応じて、選択したサービスの enabled フラグを変更します。
この例では、sendmail サービスを無効にしています。
# cat profile.xml ... <service name='network/smtp' version='1' type='service'> <instance name='sendmail' enabled='false'/> </service> ... |
必要に応じて、この新しいプロファイルを適用します。
手順については、「SMF プロファイルを適用する方法」を参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
プロファイルを適用します。
この例では、profile.xml プロファイルを使用しています。
# svccfg apply profile.xml |
generic_limited_net.xml と generic_open.xml を切り替えるための具体的な手順、およびこの切り替えを行うときに適用する必要のあるプロパティーについては、「ネットワークに提供するサービスを generic*.xml で変更する」を参照してください。
netservices コマンドを使用すると、ネットワークに最小限のシステムサービスを公開するか、従来の (以前の Solaris リリースと同じ) サービスを公開するかを切り替えることができます。この切り替えは、generic_limited.xml プロファイルと generic_open.xml プロファイルによって行われます。また、このコマンドによって一部のサービスのプロパティーが変更され、それに従ってサービスがローカル専用モードや従来モードに制限されます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
netservices コマンドを実行します。
この例では、open、つまり従来のネットワークサービスの公開を選択しています。
# /usr/sbin/netservices open |
このコマンドは、一部のサービスをローカルモードで実行するようにプロパティーを変更し、有効にするサービスを generic_limited_net プロファイルによって制限します。このコマンドは、generic_open.xml プロファイルが適用されている場合のみ使用するようにしてください。
# /usr/sbin/netservices limited |