
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 を使用するように強制しようとすると、かなりの手間がかかりますが、お勧めしません。