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 都无法访问该共享。但是 - 问题是:仅仅添加 LIST FOLDER 权限似乎赋予了两个用户创建、读取和修改文件和文件夹的权利......?这怎么可能是正确的或合乎逻辑的?
继承似乎与它没有任何关系 - 通常您可以看到继承的用户和属性显示在子文件夹中,并且它们会变灰,因为它们无法更改 - 事实并非如此。(启用继承。)
将 Jim 和 John 作为单独的共享共享可以处理它,但我不希望这样 - 示例已简化,实际上有数百个,它会导致来自网络的“扁平”非分层视图,我必须避免。
为不打算访问该文件夹的所有“其他”用户添加 DENY 条目将非常笨拙 - 有数百个。
所以我的问题:
为什么会这样?这不合逻辑——一旦我授予 NTFS 访问列表文件夹内容的权限,该用户也可以读取、写入、修改文件和文件夹——应该是这样吗?
有没有一种简单的方法来配置它,使其按预期工作?我正在考虑关闭继承 - 但我希望他自己创建的 Jim 的任何子文件夹都继承 Jim 文件夹的权限,即使在共享上关闭了继承,这种情况会发生吗?
编辑
假设访问上述示例中的文件夹总是从客户端计算机通过网络访问文件共享。(我知道如果 Jim / John 会在本地登录文件服务器,情况会有所不同,但这不是我的问题。)
更新
根据 Evan Anderson 的评论,我检查了所有权限,发现一个从磁盘驱动器本身的安全权限继承的条目。这是“服务器\用户”的“特殊权限”条目,我理解它是指该服务器的本地用户。该条目提供“创建文件”和“创建文件夹”访问权限,并继承到我的 Department1 和 Jim/John 文件夹。
我没有创建那个条目。它似乎是 Windows 在我查看的每台服务器上的每个磁盘驱动器上创建的默认条目。
删除该条目会更改 Jim 和 John 在 Department1 文件夹和子文件夹上的有效权限,因此错误的 CreateFolder 和 CreateFile 权限不再适用——这正是我想要的。感谢埃文·安德森。
但是,这提出了两个新问题:
server\Users 条目适用于什么?我的理解似乎是错误的,这仅适用于服务器的本地用户。Jim 和 John 是域登录名,并且不作为服务器上的本地用户存在。那么 Server\Users 适用于服务器的任何和所有用户是否正确,无论是从网络登录还是作为服务器上的本地用户存在?
似乎每个磁盘驱动器都有这个特殊权限条目,然后继承到该驱动器上的所有文件夹 - 让每个驱动器都具有默认条目的服务器\用户组的 CreateFile 和 CreateFolders 的目的是什么?对我来说,这听起来像是一个巨大的隐形陷阱,让每个人都试图在 Windows 共享上设置适当的权限。(如果属实,任何教程都应该以“从磁盘驱动器中删除 Server\Users 权限条目”开始。)
更新 2
我在MSDN上找到了有关 Server\Users 组的以下数据
“当计算机加入域时,域用户组被添加到计算机上的用户组中。”
这意味着 Jim 和 John 是 Server\Users 组的一部分,这就是这些权限适用的原因。所以我回答了问题 3,但问题 4 仍然存在——它背后应该有一些意义吗?
根据我的 MCITP 学习指南(Server 2008,所以它是旧的。文本和示例直接取自该教科书,作者/出版商保留所有权利):
在组合 NTFS 和共享权限时,您必须确定 NTFS 和共享权限的累积权限是什么,然后确定两者中限制性更强的。
同样重要的是要记住共享权限仅在通过网络访问共享时应用。因此,如果您以 Jim 的身份登录到文件服务器,您将独占使用 NTFS 权限(在没有 UNC 命名的情况下进行连接)。
我会尝试的一件事是将列表内容权限应用于父文件夹,在本例中为 Department1,并将子文件夹的各自所有者设置为完全控制。这将使 NTFS+共享权限列出内容,因为这是最严格的。您还可以尝试从子文件夹中删除权限继承。
我曾经在以前的雇主那里管理过这样的设置,但在我的一生中,我不记得我们是如何解决它的。但也许以上对你有帮助。明确拒绝所有其他用户当然应该是可以避免的。
有关NTFS 和共享权限的简短说明,另请参阅此内容。
编辑:作为附录,默认情况下启用权限继承。我认为即使您禁用单个用户文件夹的继承,子文件夹(例如 Jim/Folder1)也会从其直接父级继承。如果您愿意,我可以对此进行试验并最终回复您。
感谢 Evan Anderson 的评论,我检查了所有权限,并发现了一个继承自磁盘驱动器本身的安全权限的条目。
它是“服务器\用户”的“特殊权限”条目。该条目提供“创建文件”和“创建文件夹”访问权限,并继承到我的 Department1 和 Jim/John 文件夹。
这似乎是 Windows 在我查看的每台服务器上的每个磁盘驱动器上创建的默认条目。
在 Microsoft 域上,DomainUser 组会自动添加到 Server\User 组中,因此任何域用户都可以通过 NTFS 权限进行读写访问 - 因此,如果我将共享权限授予所有域用户访问共享,这会导致每个用户都对共享上的所有文件夹具有读写访问权限。
此默认条目存在于所有版本的 Windows 服务器上,当您在本地登录时,它使您可以轻松地在服务器上添加/编辑文件夹。
但是,它会产生上述问题。我必须为特定用户设置特定的共享权限,但显然这不适用于子文件夹。
删除该 server\user 条目揭示了我认为 Microsoft 将其保留在其默认 ACL 中的原因 - 在那一刻,只有管理员组有权访问该文件夹,这意味着每次编辑、每次访问(在本地server) 带来了一个 UAC 弹窗,这很烦人。
(在 Server 2016 上,删除 server\user 条目后,它会询问您是否要添加用户名以永久控制所有文件夹。这是一个很好的解决方法 - 它只是将该单个用户添加到 ACL然后不带
我还建议遵循 Evan Andersson 的非常好的答案,他在评论中引用了该答案,并为设置文件夹层次结构提供了非常好的提示。