概要

Java Service Wrapper は、複数のアクション、開始(START)、停止(STOP)、再開(RESUME)、問合せ(QUERY) 等、を起こして Windows サービスを制限できます。 デフォルトでは、そのアクションは管理者権限が必要で、実行するときに ユーザーアカウント制御で昇格のプロンプトのダイヤログが表示されるはずです。

バージョン 3.5.42 より、Wrapper のプロフェッショナル版で Windows サービスのパーミッション(アクセス権)を付与することが出来るようになりました。 パーミッションは、必要な数だけ設定することが可能で、各権限を指定のユーザー、或いはグループに特定のサービスに実行できるアクションのリストを設定出来ます。

サービスのパーミッションを変更すると便利な場合がいくつかあります。

パーミッションは、サービスをインストールするとき、或いはインストールされたサービスを更新(アップデート)するときに設定されます。後者の場合、サービスの状態が「停止中」でなければなりません。

サービスを更新する:
.\wrapper.exe -u ../conf/wrapper.conf

このページでは、各パーミッションに使用されるコンフィギュレーションプロパティのセットについて説明します。

次のプロパティは、インクリメントされるインデックスでリストすることができます。

次の単一のプロパティは、高度な設定にも使用できます。

さらに、サービスの権限を照会することも可能です。

権限の設定

wrapper.ntservice.permissions.<n>.account プロパティ

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

特定のサービスのアクセス権が付与されるアカウントやグループを設定します。

有効な形式は次の通りです。

  • <ローカルアカウント或いはグループ名>
  • .\<ローカルアカウント或いはグループ名>
  • <ドメイン>\<アカウント或いはグループ名>

プロパティを「CURRENT_USER」に設定すると、パーミッションが設定されるマシンの『現在のユーザー』に設定されます。 これは、異なるユーザー名でセットアップされた複数のマシンに同じコンフィギュレーションを展開するときに役立ちます。

このプロパティには、デフォルト値はありません。 権限が有効になるには、このプロパティと[wrapper.ntservice.permissions.<n>.allow]の両方が設定されていなければなりません。

設定例:
wrapper.ntservice.permissions.1.account=.\mylocalaccount
wrapper.ntservice.permissions.1.allow=START, STOP

もし、アカウントは存在しない場合、デフォルトで Wrapper はエラーを出力し、権限を設定する前に停止しますが、 「wrapper.ntservice.permissions.optional_accounts」プロパティに存在しないアカウントが設定された場合、その権限はスキップされます。

パーミッションをいくつでも設定が可能で、 プロパティ名の「<n>」コンポーネント部に、 「1」からカウントアップしていくインテージャー(整数値)のナンバリング数値を入れて指定します。 デフォルトでは、連番であり欠番で飛ぶことはないはずです。 [wrapper.ignore_sequence_gaps]プロパティで、 シーケンス内でギャップ(途切れ)を任意に許可するように設定にすることができます。

複数のパーミッションが、同じサービスで同じアカウントを対象とする場合、 ビット単位の「OR」演算子を使用して権限は統合されます。 これは、たとえば、『権限1』が「START」を許可し、『権限2』が「STOP」を許可する場合、 結果として、「START」と「STOP」の両方の権限が付与されます。 これは、インクルードファイルがパーミッションを追加して許可を拡張する必要がある場合に使用できます。

注意

安全のため、Wrapper では、管理者グループのアクセス権を変更できません。 これを可能にすれば、サービスを停止やアンインストール、アクセス権のリセットなどができなくなるという、 ブロックされた状態になる可能性があります。

wrapper.ntservice.permissions.<n>.allow プロパティ

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

アクセス権が Windows サービスのユーザーまたはグループに付与するコンマ区切りアクションのリストを設定します。

このプロパティには、デフォルト値はありません。 権限が有効になるには、このプロパティと[wrapper.ntservice.permissions.<n>.account]の両方が設定されていなければなりません。 ただし、特定のユーザーまたはグループのすべてのアクセス許可を削除するには、空の値、或いは「NONE」に定義することもできます。

次のパーミッションを利用できます。

  • [QUERY_STATUS] :

    サービスの状態の照会を許可します。

  • [QUERY_PERMISSIONS] :

    サービスのパーミッションの照会を許可します。 サービスを更新(アップデート)する時はこの権限と「UPDATE_CONFIG」を併用してください。

  • [UPDATE_CONFIG] :

    サービスのコンフィギュレーションの更新を許可します。

  • [UPDATE_PERMISSIONS] :

    サービスのパーミッションの更新を許可します。

  • [START] :

    サービスの開始を許可します。

  • [STOP] :

    サービスの停止を許可します。

  • [PAUSE_RESUME] :

    サービスの一時停止/再開を許可します。

  • [INTERROGATE] :

    サービスへの問合せを許可します。 サービスへ問合せするためのコントロールコードを送る時はこの権限と「CONTROL_CODE」を併用してください。

  • [CONTROL_CODE] :

    サービスへユーザー定義コントロールコマンドの送信を許可します。

  • [ALL] :

    全てのパーミッションを許可します。

  • [NONE] :

    アクセス権なし。

設定例:
wrapper.ntservice.permissions.1.account=CURRENT_USER
wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

もし、上記に列挙されていない値が見つかった場合、それはスキップされ、警告が出力されます。

注意

サービスをインストールするときにパーミッションを設定するといっても、実はサービスが作成された後に設定されます。 故に、「インストール済み」状態は権限を設定するための前提条件であるため、サービスをインストールする権限はありません。

wrapper.ntservice.permissions.<n>.service プロパティ

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

権限が適用されるサービスの名前を指定します。

このプロパティは任意設定です。設定されていない場合、デフォルト値は現在のサービスの名前([wrapper.name]プロパティの値)です。

設定例:
wrapper.ntservice.permissions.1.account=CURRENT_USER
wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

wrapper.ntservice.permissions.2.service=dependant_service
wrapper.ntservice.permissions.2.account=CURRENT_USER
wrapper.ntservice.permissions.2.allow=PAUSE_RESUME

権限が有効になるには、サービスが存在する必要があります。 指定された値がインストール済みのサービス名と一致しない場合、デフォルトで Wrapper はエラーを出力して、権限を設定する前に停止しますが、 存在しないサービスが[wrapper.ntservice.permissions.optional_services]に設定されていた場合、その権限はスキップされます。

任意の権限(移植性のため)

wrapper.ntservice.permissions.optional_accounts プロパティ

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

Windows サービスの権限を設定する際に任意のアカウントを列挙することが出来ます。 もし、権限が列挙されているアカウントに設定されているが、そのアカウントが Wrapper が作動しているマシン上に存在しない場合、その権限は「FATAL」エラーを発生せずにスキップされます。

任意のアカウントを列挙すると異なるアカウントで設定される複数のマシンに1つのコンフィギュレーションファイルを展開するときに役立ちます。 存在しないアカウントの権限は無視され、他の権限は普通に設定できるようになります。

wrapper.ntservice.permissions.optional_services プロパティ

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

Windows サービスの権限を設定する際に任意のサービスを列挙することが出来ます。 もし、権限が列挙されているサービスに設定されているが、そのサービスが Wrapper が作動しているマシン上に存在しない場合、その権限は「FATAL」エラーを発生せずにスキップされます。

任意のサービスを列挙すると異なるサービスがインストールされる複数のマシンに1つのコンフィギュレーションファイルを展開するときに役立ちます。 存在しないサービスの権限は無視され、他の権限は普通に設定できるようになります。

デバッグ

wrapper.ntservice.permissions.check.loglevel プロパティ

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

パーミッションを確認するときに出力されるデバッグ出力のログレベルをコントロールします。

Wrapper がサービスに対して実行する操作の権限は、Windows セキュリティモデルによって提供されるいくつかの基本的なアクセス権で構成されています。 操作を実行する前に、Wrapper は現在のユーザーがその操作を許可されているかどうかを確認します。 従って、基本的なアクセス権が付与されていることを確認します。 これを行うと、各アクセス権のステータス(許可されているかどうか)を示すメッセージが出力されます。 このプロパティにより、これらのメッセージのログレベルを制御できます。

デフォルト値は DEBUGです。

設定例:
testwrapper の権限確認 - QUERY_PERMISSIONS(SERVICE_QUERY_STATUS=TRUE, READ_CONTROL=TRUE)-> OK

上記例では、「QUERY_PERMISSIONS」は「SERVICE_QUERY_STATUS」と「READ_CONTROL」で構成されていることがわかります。 両方の基本的なアクセス権は「TRUE」になっているため、「QUERY_PERMISSIONS」権限が現在のユーザーに付与されています。

Windows サービスのパーミッションの照会

対応バージョン :3.5.42
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/Linux (未対応)

次のコマンドでサービスのパーミッションを照会することが出来ます。

現在のサービスのパーミッションを照会する:
.\wrapper.exe -qp ../conf/wrapper.conf
wrapperm | 現在のユーザー: mypc\myuser
wrapperm | 上記ユーザーは次のグループのメンバー:NT AUTHORITY\INTERACTIVE
wrapperm |
wrapperm | testwrapper サービスの権限:
wrapperm |
wrapperm |   mypc\myuser:
wrapperm |     START, STOP, PAUSE_RESUME
wrapperm |
wrapperm |   NT AUTHORITY\SYSTEM:
wrapperm |     QUERY_STATUS, QUERY_PERMISSIONS, START, STOP, PAUSE_RESUME, INTERROGATE, CONTROL_CODE
wrapperm |
wrapperm |   NT AUTHORITY\INTERACTIVE:
wrapperm |     QUERY_STATUS, QUERY_PERMISSIONS, INTERROGATE, CONTROL_CODE
wrapperm |
wrapperm |   NT AUTHORITY\SERVICE:
wrapperm |     QUERY_STATUS, QUERY_PERMISSIONS, INTERROGATE, CONTROL_CODE

上記例の出力で、「myuser」は「NT AUTHORITY\INTERACTIVE」のメンバーであり、そのアクセス権を継承していることがわかります。 さらに、「START」、「STOP」、「PAUSE_RESUME」はユーザーに明確に付与されています。

他のサービスの権限も「-qp=serviceName」で照会できます。

サービス名を使用して、 他のサービスのパーミッションを照会する:
.\wrapper.exe -qp=otherservice ../conf/wrapper.conf

参照:Windows サービス

[表示]

[開始/停止]