Windows Server(任何版本),带有子文件夹的共享文件夹,如下所示:
Department1
Jim
John
其中 Department1 是网络共享,Jim / John 是子文件夹。
我想要的是只有 Jim 对“Jim”文件夹具有写访问权限(即只有 Jim 可以在 Jim 子文件夹中创建文件和文件夹),并且只有 John 对“John”文件夹具有写访问权限。
听起来很简单,但我找不到方法来实现。
权限设置方法如下:
Folder "Department1"
share permissions: Everyone - Change + Read
NTFS permissions: Jim - List Folder Contents
John - List Folder Contents
Subfolder "Jim"
NTFS permissions: Jim - Full Control
Subfolder "John"
NTFS permissions: John - Full Control
发生的事情是:
- 在父共享文件夹“Department1”中,Jim 和 John 都可以创建、编辑、修改和读取任何文件和文件夹。
- Jim 可以创建、编辑、修改和读取他自己以及 John 文件夹中的任何文件和文件夹
- John 可以创建、编辑、修改和读取他自己以及 Jim 的文件夹中的任何文件和文件夹
(我从“有效权限”工具中以及以 Jim 的身份登录并尝试时都看到了这个结果)。
应该发生的是 - 没有人可以在父文件夹中创建文件,并且 Jim 不应该能够在 John 的文件夹中创建/修改文件,反之亦然。
如果我从父文件夹中删除“列出文件夹内容”权限,Jim 和 John 都无法访问共享。但是 - 问题是:仅添加“列出文件夹”权限似乎就赋予了两个用户创建、读取和修改文件和文件夹的权限...?这怎么可能正确或合乎逻辑?
继承似乎与此无关 - 通常您可以看到继承的用户和属性显示在子文件夹中,并且它们会变灰,因为它们无法更改 - 但事实并非如此。(已启用继承。)
将 Jim 和 John 作为单独的份额共享可以解决这个问题,但我不想这样 - 这个例子被简化了,实际上有数百个,它会导致从网络角度出现“扁平”的非层次化视图,而我必须避免这种情况。
为所有不打算访问该文件夹的“其他”用户添加 DENY 条目将非常麻烦 - 因为有数百个。
我的问题是:
为什么会发生这种情况?这不合逻辑 - 一旦我授予 NTFS 访问列表文件夹内容的权限,该用户也可以读取、写入、修改文件和文件夹 - 应该是这样吗?
有没有一种简单的方法可以配置它以使其按预期工作?我一直在考虑关闭继承 - 但我希望 Jim 自己创建的任何子文件夹都能继承 Jim 文件夹的权限,即使在共享上关闭继承,也会发生这种情况吗?
编辑
上述示例中的文件夹访问假定始终是从客户端计算机通过网络到文件共享进行的。(我知道如果 Jim / John 本地登录文件服务器,情况会有所不同,但这不是我的问题。)
更新
根据 Evan Anderson 的评论,我检查了所有权限,发现一个从磁盘驱动器本身的安全权限继承的条目。它是“server\users”的“特殊权限”条目,我理解这是指该服务器的本地用户。该条目授予“创建文件”和“创建文件夹”访问权限,并继承到我的 Department1 和 Jim/John 文件夹。
我没有创建该条目。它似乎是 Windows 在我查看的每台服务器的每个磁盘驱动器上创建的默认条目。
删除该条目会更改 Jim 和 John 在 Department1 文件夹和子文件夹上的有效权限,这样错误的 CreateFolder 和 CreateFile 权限就不再适用了 - 这正是我想要的。所以感谢 Evan Anderson。
但这又引出了两个新问题:
server\Users 条目适用于什么?我的理解似乎是错误的,这仅适用于服务器的本地用户。Jim 和 John 是域登录,不作为服务器上的本地用户存在。那么 Server\Users 适用于服务器的任何和所有用户,无论是从网络登录还是作为服务器上的本地用户存在,这种说法正确吗?
似乎每个磁盘驱动器都有这个特殊的权限条目,然后该权限条目将继承到该驱动器上的所有文件夹 - 让每个驱动器都为 server\users 组设置默认的 CreateFile 和 CreateFolders 条目的目的是什么?在我看来,对于每个试图在 Windows 共享上设置适当权限的人来说,这听起来像是一个巨大的隐形陷阱。(如果属实,任何教程都应该以“从磁盘驱动器中删除 Server\Users 权限条目”为开头。)
更新 2
我在以下位置找到了有关 Server\Users 组的数据 微软
“当计算机加入域时,域用户组将添加到计算机上的用户组中。”
这意味着 Jim 和 John 属于 Server\Users 组,因此这些权限适用。因此我回答了问题 3,但问题 4 仍然存在 - 这背后应该有些道理吧?
答案1
根据我的 MCITP 学习指南 (服务器 2008,所以它比较老了。文本和例子直接取自该教科书,版权归作者/出版商所有):
- 权限是继承的
例如,如果“Everyone”组被授予对“Sales”文件夹的“完全控制”权限,则“Everyone”组将拥有对此文件夹中名为“FY08”的新文档的“完全控制”权限。(第 287 页)
- 权限是累积的
举例来说,假设您同时是销售组和营销组的成员。如果销售组被授予对某个文件夹的读取权限,而营销组被授予对同一文件夹的写入权限,那么您的有效权限就是读取和写入 - 即来自两个组的累积权限。(第 287 页)
- 拒绝优先
例如,如果 Joe 被明确拒绝对名为 Sales 的文件夹具有写入权限,但 Joe 是被授予该文件夹完全控制权的 Sales 组的成员,则 Joe 将不是能够写入此文件夹。(第 287 页)
当组合 NTFS 和共享权限时,您必须确定 NTFS 和共享权限的累积权限,然后确定两者中限制更严格的权限。
还需记住的是,共享权限仅在通过网络访问共享时才适用。因此,如果您以 Jim 的身份登录文件服务器,您将仅使用 NTFS 权限(不使用 UNC 命名进行连接)。
我会尝试将“列出内容”权限应用于父文件夹(在本例中为 Department1),并将子文件夹的相应所有者设置为“完全控制”。这将使 NTFS+Share 权限列出内容,因为这是最严格的。您还可以尝试从子文件夹中删除权限继承。
我以前在一家雇主那里管理过类似的设置,但我怎么也想不起来确切地我们如何解决这个问题。但也许以上内容对您有帮助。明确拒绝所有其他用户肯定是可以避免的。
看这还对 NTFS 和共享权限进行了更简短的解释。
编辑:作为补充,权限继承默认处于打开状态。我认为,即使您禁用单个用户文件夹的继承,子文件夹(例如 Jim/Folder1)也会从其直属父级继承。如果您愿意,我可以对此进行实验并最终回复您。
答案2
感谢 Evan Anderson 的评论,我检查了所有权限并找到了从磁盘驱动器本身的安全权限继承的条目。
这是“server\users”的“特殊权限”条目。该条目授予“创建文件”和“创建文件夹”访问权限,并继承到我的 Department1 和 Jim/John 文件夹。
这似乎是我查看过的每台服务器的每个磁盘驱动器上 Windows 创建的默认条目。
在 Microsoft 域上,DomainUser 组会自动添加到 Server\User 组,以便任何域用户都可以通过 NTFS 权限进行读取 + 写入访问 - 因此,如果我向所有域用户授予访问共享的共享权限,这会导致每个用户都对共享上的所有文件夹都有读取 + 写入的权限。
此默认条目存在于所有版本的 Windows 服务器上,当您在本地登录时,它可以轻松地在服务器上添加/编辑文件夹。
但是,这会产生上述问题。我必须为特定用户设置特定的共享权限,但显然这对子文件夹不起作用。
删除该 server\user 条目揭示了我认为微软至今仍在其默认 ACL 中保留此条目的原因 - 在那一刻,只有管理员组才能访问该文件夹,这意味着每次编辑、每次访问(在服务器本地)都会弹出 UAC 窗口,这非常烦人。
(在 Server 2016 上,删除 server\user 条目后,它会询问您是否要添加用户名以永久控制所有文件夹。这是一个很好的解决方法 - 它只会将该单个用户添加到 ACL 中,而不会带来
我还建议关注 Evan Andersson 的非常好的答案这里他在评论中引用了这一点并给出了设置文件夹层次结构的非常好的提示。