2017-06-19 33 views
0

我们的应用程序使用共享目录来存储“签出”的文件,通过我们的应用程序进行修改,然后“签入”共享目录,即通过SMB访问(环境托管在一组AWS服务器上,我们的最终用户通过Citrix访问它)。共享目录的文件访问安全性 - Windows Server 2012 R2 - AD

所有用户都对共享目录具有读取,写入等权限。

我们最近改变了应用程序的体系结构。以前,每个用户在存储签入/签出文件的共享目录中都有他/她自己的子目录。

在新架构中,不使用各个子目录,因此用户签入的所有文件都直接存储在共享目录中。然后允许用户签出/签入共享目录中的任何文件。

结帐过程涉及将文件的库版本的File.Copy复制到用户的本地非共享目录。然后,用户使用我们的应用程序对文件进行更改,然后将其保存在本地,并将File.Copy恢复到共享目录中。

除了在新架构中,当用户2尝试签出最初由User1签入的文件时,“签出”操作失败。就像我们可以告诉的那样,这是因为,例如,当用户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) 
+0

我不知道'File。复制'是否复制权限;可能不会,在这种情况下,分配给文件的权限取决于共享目录上的权限。请发布共享目录的权限的详细信息。 –

+0

哈里 - 感谢您的快速回复...共享目录安全列表中包含两个管理员所属的AD组的条目(“002.EightTwoConversion”)。该条目的权限为修改,读取和执行,列出文件夹内容,读取和写入。 –

+0

该许可是可继承的吗? “002.EightTwoConversion”是什么意思 - 它看起来不像Windows术语,是位于非Windows服务器上的目录吗?用户1创建的文件上设置了什么权限? –

回答

0

当一个文件被移动时,Windows不会更新ACL添加或删除继承的权限。这大概是出于向后兼容的原因;权限模型在最早版本的Windows NT中看起来有些不同。

您的选择是复制文件而不是移动文件,或者在文件移动后显式重置权限。

如果要明确重置权限,可以使用File.SetAccessControl来执行此操作。要为新位置应用继承的权限,FileSecurity对象应该包含空的ACL,并且AreAccessRulesProtected属性应该为false。

相关问题