Windows Server 2003 从未遇到过的一个非常奇怪的问题:在配置基本身份验证以限制对 IIS7 中的特定目录的访问时,我完成了以下操作:
- 在 IIS7 中启用基本身份验证并禁用特定目录的匿名身份验证
- 创建了三个 Active Directory 组:site.com Staff、site.com Members 和 site.com Something。
- 创建多个帐户并添加到适用组。
- 为 IIS7 站点的三个区域赋予特定域组的读取和执行 NTFS 权限
但是,这三个组中任何一个域帐户登录后都可以访问网站的其他三个区域。真正锁定目录的唯一方法是不仅向相应组提供读取权限,还拒绝不应有访问权限的组访问。这毫无意义,除非域用户组的成员当然是本地用户组的一部分,并且您无法拒绝对相关目录的访问。
我遗漏了什么明显的东西?
更新:很尴尬地说,这是一个非常明显的问题,与 Win2003 和 Win2008 无关。
对于所有适用的目录/文件:
- 在 IIS 中启用基本身份验证,并删除匿名。
- 删除继承权限(使用副本使事情变得简单)
- 删除本地用户组访问权限
- 授予适用的域组读取访问权限
- 添加网络服务读取权限(这是 IIS7 所特有的,因为它有集成的管道)
如您所见,Win2003 与 Win2008 之间唯一的问题是授予网络服务对相关资源的访问权限。
答案1
解决权限问题可能是一个挑战,但最终我的想法是这样的:
无论用户是否属于您创建的组,他们都可以访问目录,因为用户是本地用户组的成员,该组有权访问目录。大多数情况下,权限是累积的,除明确定义权限(允许或拒绝)的情况外,限制最少的权限适用。为了实现所需的限制,您有两种选择:
按照您已经做过的操作,对您不想访问的组定义明确的拒绝目录。
从目录中删除权限继承,从目录的权限中删除本地用户组,并在目录中为您想要访问的组定义明确的允许。