我正在尝试创建一个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