web-dev-qa-db-ja.com

ローカルWindowsデスクトップサービスアカウントを作成する方法は?

質問:

Windows Home/Professional(Windows 10)で、ローカルサービスアカウントを作成するための推奨される方法は何ですか?

これに関するドキュメントはありますか? (Powershell、GUIなど)。

説明:これはActiveDirectoryの質問ではありません-またはWindowsサービス管理アカウントの問題-デスクトップのみ。

環境:

BittorentのBTSyncインストールは、ローカルWindowsサービスとして起動するオプションを要求します。

インストール中に、ローカルサービスアカウントのユーザー名とパスワードの入力を求められます。

Linuxのように...:

Linuxでは、通常useraddを使用し、アカウントを適切なグループに関連付けます。

useradd -M btsync
usermod -L btsync

注:-rはLinuxでサービスアカウントを作成するためのものですが、ログインを無効にするかどうかは一貫していないようです-そして文書化されていません(manリンク)。

ホームディレクトリは作成されず、ログインは無効になります。

4
elika kohen

に適用されます:

Windows 7、8/8.1、Windows10-ホームおよびプロフェッショナル。

サービスをインストールするプログラム(BTSyncなど)。ただし、他のプログラム(IIS、MySQL、SQL Serverなど)のようにWindowsサービスの規則に従っていません。

問題:

  1. ソフトウェアの欠陥:一部のインストール(BitTorrent Syncなど)では、通常のユーザーアカウントが指定されていない限り、Windowsサービスがインストールされません。
  2. 予想される動作:正しいNTサービスアカウントIDを自動的に提供するか、少なくともユーザーも許可する必要があります。
  3. セキュリティの問題:ユーザーは別の通常のユーザーアカウントを作成する必要があります[これはベストプラクティスとして、絶対に行わないでください]。
  4. 回避策:適切なサービスアカウントを指定したら、この一時的なユーザーアカウントを削除する必要があります。

参考文献

  1. WindowsはLinuxの意味で「サービスアカウント」-を使用しませんが、「 仮想アカウント "および"- マネージドサービスアカウント、(LDAP環境に参加しているマシンの場合
  2. サービスアカウントの命名規則:命名規則により、仮想アカウントは「コマンド名」-[拡張子] +「svc」の形式に従う必要があるようです。
    コメントからの注記:NT Service \は、[プロパティ]> [一般]タブのサービス名である必要があります-"を含める必要はありませんsvc」またはコマンド名。 (ただし、PowerShellスクリプトでこれをテストしていません。)

    _"btsync.exe" becomes "NT Service\btsyncsvc"_

仮想「NTサービス」アカウントの作成:

  1. ローカルサービススナップイン「services.msc」を開きます
  2. 目的のサービス(btsync)に移動し、[プロパティ]を右クリックします。
  3. 「ログオン」タブを選択します。
  4. ユーザーを指定するオプションを選択します。
  5. 上記の「従来の」サービス名を入力します:(引用符なし)。

    _NT Service\btsyncsvc_

  6. パスワードを削除します。

  7. 保存-適用
  8. サービスを再起動します。

フォルダのアクセス許可の設定:

フォルダのアクセス許可を設定します-完全なアカウント名を使用します: "NT Service\btsyncsvc"、(引用符を使用する必要がある場合とない場合があります...)...

Btsyncsvcが実行権限を持っている必要はないので、必要に応じて削除します。それ以外の場合は、フルコントロールします。

エラー-「アカウント名とセキュリティIDの間にマッピングがない」ため、サービスを開始できません。

たとえば、このエラーは、「NT Service\btsyncsvc」ではなく「NTService\btsync」を指定した場合に発生します...

次のコマンドは、現在のサービスアカウント名のリストを返します。

PowerShell(PS)を使用して、「ログオン」に使用するように指定したリストと照合してリストを確認します。

PS > get-service | foreach {Write-Host NT Service\$($_.Name)}

エラー-アカウントにサービスとしてのログオン権限が付与されていないため、サービスを開始できません:

このエラーは、誤った「従来の名前」を指定した場合、または権限が実際に欠落している場合に発生する可能性がありますが、正しい規則が使用されると自動的に割り当てられます。

Windows 10 Homeでは、ユーザーはローカルセキュリティポリシースナップインを使用してこれを構成することはできません(secpol.msc)。これは、PowerShellまたはその他のユーティリティを使用して手動で行う必要があります。

PowerShellスクリプト:

これを修正するには、PowerShellを使用できます。 "Grant-Log-on-as-a-service PowerShell Script、from Technet Gallery"

PowerShellが「ExecutionPolicyエラー」を報告する場合は、ExecutionPolicyを変更する必要がある場合があります。

_PS > Set-ExecutionPolicy RemoteSigned_

...署名エラーが発生する可能性があります-その後、次のように変更されました:

_PS > Set-ExecutionPolicy Unrestricted_

次に、スクリプトを使用してアクセス許可を割り当てます。

_PS > .".\Add Account To LogonAsService.ps1" "NT Service\btsyncsvc"_

必要に応じてExecutionPolicyをリセットします。

_PS > Set-ExecutionPolicy Restricted_

お役に立てれば!

2
elika kohen