特定のサービスにのみフォルダへの読み取り/書き込みアクセスを許可する

特定のサービスにのみフォルダへの読み取り/書き込みアクセスを許可する

Windows 内の特定のフォルダーへの読み取りおよび/または書き込みアクセスを禁止し、特定のサービス/プロセスのみにアクセスを許可する方法はありますか?

権限はサービスベースではなくユーザーベースであるようですが、とにかくそのような機能を実現する方法があるかどうかを知りたいです。

答え1

はい、Windows 7 でこれを行う方法はありますが、サービスを再構成する必要がある可能性があり、互換性の問題が発生するリスク (おそらくかなり小さい) が発生します。

サービスに関連付けられたセキュリティIDは次のように参照できます。

NT SERVICE\SERVICENAME

ここで、servicenameは実際のサービス名に置き換えられます (サービス管理ツールでは「サービス名」として表示され、サービスのメイン リストに表示される表示名とは異なります)。GUI を使用してセキュリティ設定を変更し、マシンがドメインに参加している場合は、検索範囲をローカル コンピューターに変更する必要があります。また、これは現在インストールされているサービスに対してのみ機能することに注意してください。

sc showsid次のコマンドを使用して、特定のサービス名に関連付けられた SID を、そのサービスがインストールされているかどうかに関係なく確認できます。

C:\working>sc showsid wjkjk

NAME: wjkjk
SERVICE SID: S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649

コマンドを使用してファイルまたはフォルダにセキュリティを設定する場合は、icaclsをプレフィックスとして SID を指定できます (*例: ) *S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649

サービスがこのセキュリティ ID を使用してファイルにアクセスするには、サービス SID タイプを「無制限」または「制限付き」に設定する必要があります。サービス SID タイプを「なし」に設定した場合、サービス SID は機能しません。インストールされたサービスのサービス SID タイプは、次のsc qsidtypeコマンドで確認できます。

C:\working>sc qsidtype wuauserv
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: wuauserv
SERVICE_SID_TYPE:  UNRESTRICTED

サービス タイプが「なし」の場合は、次のsc sidtypeコマンドを使用して「無制限」に変更できます。

C:\working>sc qsidtype psexesvc
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: psexesvc
SERVICE_SID_TYPE:  NONE

C:\working>sc sidtype psexesvc unrestricted
[SC] ChangeServiceConfig2 SUCCESS

C:\working>sc qsidtype psexesvc
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: psexesvc
SERVICE_SID_TYPE:  UNRESTRICTED

これは、サービスが再起動されるまで有効になりません。

注記:あなたがすべきないサービスの SID タイプを「なし」から「制限付き」に変更します。これを行うと、ほぼ確実にサービスが誤動作します。タイプを「なし」から「無制限」に変更すると、問題が発生する可能性は大幅に低くなります。サービスの SID タイプがすでに「制限付き」または「無制限」である場合は、変更しないでください。

答え2

すべてのサービスが使用する疑似「ユーザー」が存在するSERVICEため、この「ユーザー」のアクセスのみを許可することで簡単にアクセスを制限できます。

しかし、これはあなたが尋ねたことではありません。これは特定のサービスではなく、すべてのサービスです。単一のサービスに制限するデフォルトのメカニズムはありませんが、5月起動時にサービスに別の ID を使用するように強制しようとすると、かなりの手間がかかりますが、お勧めしません。

関連情報