2017-06-19 68 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。