【发布时间】:2017-11-21 02:42:10
【问题描述】:
我们的应用程序使用共享目录来存储“签出”、通过我们的应用程序修改、然后“签入”到通过 SMB 访问的共享目录(环境托管在一组AWS 服务器,我们的最终用户通过 Citrix 访问它)。
所有用户都拥有共享目录的读、写等权限。
我们最近稍微改变了应用程序的架构。以前,每个用户在存储签入/签出文件的共享目录中都有自己的子目录。
在新架构中,不使用单独的子目录,因此用户签入的所有文件都直接存储到共享目录中。然后允许用户签出/签入共享目录中的任何文件。
签出过程涉及将文件库版本的 File.Copy 复制到用户的本地非共享目录。然后,用户使用我们的应用程序对文件进行更改,然后将其保存在本地,并将 File.Copy 复制回共享目录。
除了在新架构中,当用户 2 尝试签出最初由用户 1 签入的文件时,“签出”操作会失败。据我们所知,这是因为,例如,当用户 1 将文件签入共享目录时,该文件隐含地接收到他特定 AD 登录的安全条目。用户 2 的后续 File.Copy 操作出现权限错误。如果主机系统的完整管理员删除了用户 1 的安全条目,则从共享目录到用户 2 的本地目录的 File.Copy 工作正常。
请注意,两个用户都被分配到一个组,对共享目录具有读、写、修改等权限(但不是“完全控制”)。
这似乎不像那种不寻常的情况。我们还没有(还)尝试查看应用程序是否可以以编程方式删除在签入时创建的安全条目 - 即使假设这是可能的,也不必求助于它。但我们没有发现任何有效的安全设置安排。
任何信息或建议将不胜感激。
谢谢...
根据要求:
\\citrixfile01\Shares\clients\002\library
ALIGHTENT\002.EightTwoConversion:(I)(OI)(CI)(M)
NT AUTHORITY\LOCAL SERVICE:(I)(OI)(CI)(RX)
S-1-5-21-3973462947-2300097736-545649627-500:(I)(OI)(CI)(F)
ALIGHTENT\citrix:(I)(OI)(CI)(F)
ALIGHTENT\alightcalc:(I)(OI)(CI)(M)
ALIGHTENT\Domain Admins:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
\\citrixfile01\Shares\clients\002\library\AML_AmPac_8.2.amox
ALIGHTENT\002.Admin1:(I)(M)
ALIGHTENT\citrix:(I)(F)
ALIGHTENT\AEAdmin2:(I)(M)
ALIGHTENT\Domain Admins:(I)(F)
BUILTIN\Administrators:(I)(F)
【问题讨论】:
-
不知道
File.Copy是否复制权限;可能不是,在这种情况下,分配给文件的权限由共享目录上的权限决定。请发布共享目录权限的详细信息。 -
您好 Harry - 感谢您的快速回复...共享目录安全列表包含两个管理员所属的 AD 组的条目 ("002.EightTwoConversion")。该条目的权限是修改、读取和执行、列出文件夹内容、读取和写入。
-
该权限是否可继承?
002.EightTwoConversion是什么意思 - 这看起来不像 Windows 术语,有问题的目录是否位于非 Windows 服务器上?用户 1 创建的文件设置了哪些权限? -
“002.EightTwoConversion”的权限是可继承的。名称本身只是我们使用的一种内部约定格式。共享目录位于 Windows 服务器上,但我们的应用程序在 AWS 环境中的不同 Windows 服务器上运行。创建的文件获得目录的权限,但没有“002.EightTwoConversion”条目,但有用户1的条目。
-
正如我在最初的消息中提到的,如果我们在创建的文件上删除用户 1 的安全条目,那么用户 2 就可以从共享目录中复制它。我们观察到的行为表明,当用户 1 编写文件时,他成为文件的唯一“所有者”,因此用户 2 无法访问它以执行 File.Copy。 [感谢您一直以来的帮助!]