如何限制组只能使用Windows Server读取两个特定的文件夹?

我在Windows Server 2003上有一组用户,他们需要能够读取两个目录的内容,但无法访问服务器上的其他任何内容(包括只读访问权限)。 其中一个目录是K:\projectFour\config – 另一个是相似的格式 – 所以组成员能够列出K:\K:\projectFour\的内容是可以的,但实际上并没有读取任何内容那些目录。

我通过SF / Google发现了一些资源,包括如何限制个人文件夹/驱动器以及如何让用户只运行特定的可执行文件,但是这些信息最终并没有解决我的问题。 对不起,如果这是一个非常简单的事情,我通常是一个开发人员,不知道有关服务器或组策略的第一件事情。 最后,我要提一下,这不是一个完全具体的问题,因为它最终会被实现,但是我现在还没有个人的Windows Server 2003副本。

对于某些人来说,NTFS有点奇怪,因为相同的访问位在设置目录时会比在文件上设置时执行不同的操作。 如果你在Server 2003上有这样的结构:

 \\devsrv\projshare\projectFour\Config 

为了允许用户查看“config”目录的内容,但不能查看“\”和“projectFour”目录的内容(只是元数据),需要做几件事情。 我假设用户没有其他权利,将授予他们的可见性/访问该份额的顶部。

  • 共享的顶级目录至less需要“RX”权限才能访问该目录。 这可以在权限对话框的“高级”设置下设置。
    • 勾选以下权限,“列出文件夹/读取数据”,“读取属性”,“读取扩展属性”,“读取权限”
    • 确保“应用到”读取“仅此文件夹”
    • 此权限集允许用户映射共享,而不会出现拒绝访问错误。
  • 在“projectFour”目录下重复这一步。
  • 在'config'目录下,授予用户简单的'Read'权限。

这个权限设置虽然很复杂,但是可以让用户通过本地驱动器映射到共享根目录来进入Config目录。 他们将能够进入项目四目录并查看其目录列表信息,但没有其他数据。

如果你有它可用,icacls使这更容易:

 (on server) icacls k:\ /grant [usergroup]:(r) (on client, if on server replace "\\devsrv\projshare" with "k:") icacls \\devsrv\projshare\projectFour /grant [usergroup]:(r) icacls \\devsrv\projshare\projectFour /grant [usergroup]:(oi)(ci)(rx) 

(oi)表示“对象inheritance”,意思是“应用于文件”。

(ci)的意思是“容器inheritance”,意思是“适用于目录”。

(r)意思是“读”,直接在目录上设置意味着“允许用户读取该目录的元数据”。

(rx)表示“读取和执行”。 作为(r),但允许用户执行这个结构中的程序。

当与Access Based Enumeration(可用的,IIRC,Server 2003 R2及更高版本)结合使用时,用户将只能看到他们有权访问的目录和文件。 在上述情况下,即使在根目录下有三十个其他目录,用户也只能看到共享根目录下的“projectFour”。

如果我明白你想要做什么,最好的办法是为你想要限制的用户创build一个组,然后只给这个组“列出文件夹内容”给他们应该能够看到文件的文件夹但不读它们。

然后,您还需要从任何可能授予他们对该文件夹的常规访问权限的组中删除受限用户。 有一点需要注意,我倾向于在很多文件服务器上find“域用户”组访问文件夹,每个人都应该有权访问这些文件夹,以便稍后再遇到像你这样的情况。