我正在嘗試創建一個SQL語法來搜索我的數據庫以查找用戶無法訪問的網絡上的文件夾。使用CTE查找孤立文件夾
讓我解釋一下:
我的數據庫有5個表:
表:文件夾
- FUID - INT - 獨特的ID
- 路徑 - 的Varchar - 例如:E:\共享
- STATUS - INT - 1 =良好,0 =陳舊
表:團體
- GRUID - INT - 唯一ID
- 類 - VARCHAR - 用戶或管理組(admin組是一個sysadmin組)
- 名稱 - 實施例HR_Users
- STATUS - INT - 1 =良好,0 =陳舊
表:用戶:
- URUID - INT - 唯一ID
- 類 - VARCHAR - 標準用戶或管理員用戶(管理員用戶是一個系統管理員)
- 名稱 - 的Varchar - 實施例:史密斯,約翰
- STATUS - INT - 1 =良好, 0 =陳舊
表:UG_JOIN:
- UID:唯一ID
- GRUID - INT - 到羣組 關係
- URUID - INT - 到用戶關係
- STATUS - INT - 1 =良好,0 =陳舊
表:ACLS:
- UID - INT - 唯一ID
- FUID - INT - 與文件夾的關係FUID
- GRUID - INT - 與組GRUID的關係
- URUID - INT - 與用戶的關係URUID
- ACCESS - VARCHAR - 訪問類型,列表,讀取,修改,完全控制
- 狀態 - INT - 1 =良好,0 =陳舊
我之所以有兩個用戶和組在ACL表中是因爲有些用戶直接在文件夾中分配權限,而不是按組進行分配。
無論如何,我試圖找出是:
- 什麼文件夾沒有標準用戶
- 包括上述的任何權限,我希望能夠通過ACCESS過濾掉,所以搜索標準用戶不具有修改權限的文件夾)。
- 也想篩選出陳舊組,用戶UG_Join,文件夾和ACL使用狀態欄
我不會試圖查找某些用戶訪問。我不關心這一點,我想要的是標準用戶無法訪問(列表,讀取,修改,完全控制)文件夾。我不希望在我的結果中看到用戶名或組名,只是路徑。
從邏輯上講,我能想到的是獲取管理員訪問的所有路徑(這是路徑的100%),然後跳過最終用戶可以訪問的路徑,只留下只有管理員才能訪問的路徑。有關我將如何去做這件事的任何想法?謝謝!
該查詢可能只是工作,如果它沒有返回陳舊的權限/文件夾/用戶/組。不過這是一個很好的開始。謝謝! – 2015-02-18 13:21:32
很高興幫助你。抱歉混淆。我從你的問題中假設你正在通過基於表結構的腳本刷新數據庫中的權限。你是否要求一個PowerShell腳本來讀取實際的ACL和遍歷文件夾? – 2015-02-18 20:13:12
不,我有一個powershell腳本,它讀取每個文件夾的實際ACL並將原始值放入數據庫。該腳本還查詢所有用戶和組成員的活動目錄。我已經設置了每兩週自動刷新一次數據。這就是說,我真的只想要一個SQL查詢,可以告訴我我們的文件共享用戶無法訪問哪些文件夾(讀/列表)(1),另一個查詢來查看用戶無法修改哪些文件夾/寫入(2) – 2015-02-18 20:24:37