icacls コマンドで、オブジェクトに削除拒否の設定を行うと、リモートからの接続時にアクセスが拒否されることがあります

適用対象: Windows Server 2008 R2 DatacenterWindows Server 2008 R2 EnterpriseWindows Server 2008 R2 Standard 詳細

現象


以下の icacls コマンドで、削除拒否の設定が行われたファイルやフォルダーに対し、SMBv2 プロトコルを使用してリモートから接続すると、接続時にアクセスが拒否されます。
icacls "<ファイルまたはフォルダーのパス>" /deny <ユーザー名>:(D)

原因


SMBv2 プロトコルでは、アクセスしてきたユーザーに対して、読み取り権限に加え、SYNCHRONIZE のユーザー アクセス権を持っているかどうかについての確認も行います。
SYNCHRONIZE のユーザー アクセス権を持たないユーザーが SMBv2 プロトコルを使用してファイルやフォルダーにリモートから接続すると、接続時にアクセスが拒否されます。
icacls コマンドの (D) オプションは、DELETE と SYNCHRONIZE のユーザー アクセス権を操作します。
/deny オプションとともに用いることで、DELETE と SYNCHRONIZE のユーザー アクセス権の拒否を明示的に設定します。
その結果、icacls コマンドの /deny オプションと (D) オプションで削除拒否の設定が行われたファイルやフォルダーに対し、SMBv2 プロトコルを使用してリモートから接続すると、接続時にアクセスが拒否される事象が発生します。

SMBv2 は、Windows Vista 以降で導入されました。
SMBv2 は、接続元と接続先の両方のコンピューターでサポートされている場合にのみ利用されます。
それ以外の場合 (Windows XP からアクセスしている場合など) は、従来の SMBv1 が利用されます。
SMBv1 を利用してアクセスされた場合は、SYNCHRONIZE のユーザー アクセス権があるかどうかについての確認が行われないため、本事象は発生しません。
ただし、 Windows Vista、Windows Server 2008、Windows Server 2008 R2、Windows 7 において、SMB2 および OpLock を無効化した場合には、SYNCHRONIZE のユーザー アクセス権を確認する動作となります。

解決方法


ファイルやフォルダーに対して削除拒否の設定を行う際、icacls コマンドの (DE) オプションを使用します。
(DE) オプションは、DELETE のユーザー アクセス権のみを操作します。

icacls "<ファイルまたはフォルダーのパス>" /deny <ユーザー名>:(DE)

ファイルやフォルダーに対して SYNCHRONIZE のユーザー アクセス権が拒否されているかどうかを確認するためには、cacls コマンドを実行します。

cacls "<ファイルまたはフォルダーのパス>"
ファイルやフォルダーに対して SYNCHRONIZE のユーザー アクセス権が拒否されている場合の上記 cacls コマンドの実行結果の例を記載します。
-------------------------------------------------------------------------------------
<ファイルまたはフォルダーのパス> <ユーザー名>:(DENY)(特殊なアクセス:)
                               DELETE
                               SYNCHRONIZE
-------------------------------------------------------------------------------------


既にファイルやフォルダーに対して SYNCHRONIZE のユーザー アクセス権の拒否が設定されており、これを修正したい場合には、一度該当ユーザーに対して拒否されたすべての権限を削除したのちに、再度必要な拒否の設定を追加します。 

icacls "<ファイルまたはフォルダーのパス>" /remove:d <ユーザー名>
icacls "<ファイルまたはフォルダーのパス>" /deny <ユーザー名>:(DE)
icacls の /removed:d オプションは、SYNCHRONIZE や DELETE 以外にも、指定したユーザーに対するすべての拒否設定を削除します。
DELETE のユーザー アクセス権以外にも、拒否すべきユーザー アクセス権がある場合には、それらについても icacls の /deny オプションで再設定します。

詳細


GUI (ファイルやフォルダーのプロパティ) からは、SYNCHRONIZE のユーザー アクセス権の許可 / 拒否について設定を確認したり、明示的に変更したりする方法はございませんが、GUI からセキュリティ設定を変更し、適用した時点で、SYNCHRONIZE のユーザー アクセス権を拒否する設定が失われます。