设置权限时弹出"无法枚举容器中的对象。访问被拒绝"的原理和3种解决方法

网友投稿 3488 2022-09-13

设置权限时弹出"无法枚举容器中的对象。访问被拒绝"的原理和3种解决方法

设置权限时弹出"无法枚举容器中的对象。访问被拒绝"的原理和3种解决方法

在设置NTFS文件夹权限的时候,可能会弹出"无法枚举容器中的对象。访问被拒绝"的错误提示框。网上遇到此问题的人不在少数,也有很多文章给出了解决方法,但没有给出背后的原理。“NTFS权限”的确是一个比较挠头的概念,让人感觉似是而非。本文分析这个错误提示背后的原理,并给出解决之道。

注:“文件夹”与“目录”的含义相同,本文都称为目录。

实验环境:Win10-64 专业版

实验预设:有目录结构:admin\wang\test.txt

你以管理员 Cloud 登录,属于administrators组。

​实验目标:给目录 admin 及其下的所有目录和文件添加管理员 Cloud 完全访问权。

说白了就是管理员Cloud 能进入 admin 以及其下的所有目录,并增删改所有文件。当然你可以添加任何用户的访问权。

这里有个重要概念:NTFS的权限是“继承上一级”的。对于本例的目录结构,文件 test.txt 的权限继承于目录 wang,wang的权限继承于目录 admin,admin的权限继承于根目录,也就是盘符。

注:从下层的方向看是“继承”上层的权限,从上层的方向看就是把权限“传递”到下层。

所以,当你在目录 admin 上右键→属性→安全,所有的权限都是灰色不可改,说明这些权限继承自上一级目录,也就是根目录 D:\ ,你无权修改。

注:其实也可以改,见文末的“小技巧”。

由此可见,如果你想给你 admin 之下的所有目录和文件都赋予某个权限,只需要给目录 admin 赋予该权限就可以了,权限会自动向下传递,不用到其下的所有目录去挨个设置。

但问题就出在这里。当你右键 admin→属性→安全→编辑→添加,添加管理员 Cloud 的时候,弹出了这个错误提示:

背后的原理:admin 本身的权限已经被成功修改,然后基于权限的“继承”特性,再把修改后权限传递给下级,但碰到了“不服管”的目录或文件,导致权限传递过程被打断从而报错。

对于本例就是:当前登录的管理员 Cloud 已经可以访问 admin,但无权访问wang和其下test.txt。

原因有2个:

1、文件/目录的”所有者“不是你当前的用户(或其属组)

2、文件/目录没有被赋予当前用户(或其属组)的访问权

再重复一遍:当目录 admin 向下传递权限的时候,碰到了不服它管的子目录或文件。

不服管这件事是谁干的呢?是另一个用户干的!比如 wang 登录计算机,非常鸡贼的把包括管理员在内的其它用户和组都删除了,只剩下自己有权读写,以保护自己的隐私(鸡贼方法见文末的“小技巧”。):

这就造成了管理员向下传递权限时被阻挡。

​找到原因就好办了,有三种解决方法:

方法一、要用户 wang 添加你的权限,如果他愿意的话。

把你的用户或属组添加到目录 wang,并赋予完全控制权,比如添加管理员组:

方法二、夺取目录和文件的权限。

​这又分为2步:夺取“所有者”和添加管理员权限。

右键 admin→属性→安全→高级,顶部”所有者“右侧显示当前所有者为 Cloud:

至此,admin 之下的所有目录和文件都受到管理员组的管理了!

你可能注意到了2次勾选,分别是“替换子容器和对象的所有者“和”使用可以从此对象继承的权限项目替换所有子对象的权限项目”。前者是向下传递你指定的所有者:

后者是向下传递你当前看到的这些权限:

另外这两个步骤有先后顺序,一定要先夺取所有者,再赋予用户和组权限,否则还是会报错,因为所有者的权限最高,有权修改文件和目录的权限。

因为是做实验,所以没有添加其它的用户,如果你要添加用户就在该页面点添加→选择主体,添加其它用户的“完全控制”权。(如果你足够“大方”,也可以添加 Everyone),再勾选上述2个选项。

方法三、命令行

以上是使用图形界面操作,而且分为了夺取”所有者“和赋予NTFS权限两个步骤。其实 Windows 已经给出了一个专用工具 takeown,从名字也可以看出,它是专门用于夺取控制权的。takeown /? 可以查看帮助,其中的“描述”写道:

具该工具以重新分配文件所有权的方式允许管理员重新获取先前被拒绝访问的文件访问权。

只需要以管理员权限运行cmd,执行一条命令即可夺取使用权:

takeown /f d:\admin /a /r /d y

​​其中 d:\admin 是本例的目录,根据你的实际情况填写。比如夺取 D 盘全部的目录和文件:

takeown /f d:\ /a /r /d y

所有者和NTFS权限一条命令搞定!

也许你会问:用户 wang 已经不允许其它人访问自己的文件和目录,但又被管理员夺回,那岂不是没有自己的隐私了?是的!管理员是这台PC的上帝,“权限”在他面前形同虚设。

当然,“普通用户”之间还是可以相互保密的。

小技巧:怎样删除无关的权限,只保留自己的权限。

实验目标:PC上有用户 wang,想要做到目录 wang及其下的文件 test.txt 只能被自己读写,其它任何人(包括管理员)都无权读写,也就是下图的目标。

实现步骤:

1、管理员 cloud 登录,创建 admin 目录

2、用户 wang 登录,在 admin 之下创建目录 wang 以及其下的文件 test.txt,最终的目录结构就是 admin\wang\test.txt。

3、依然是用户 wang 登录,右键 wang→属性→安全,可见当前拥有权限的组太多了,需要都删掉,再单独添加用户 wang:

但问题是,这些组的权限是继承自上一级目录 admin,无法直接删除,所以要在删除之前“打断继承链条”。点高级→禁用继承,会弹出框,选择“从此对象种删除所有已继承的权限”,再点确定:

至此,用户 wang 已经拥有了目录 wang 的控制权。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot~集成DataSource 与 Druid监控配置
下一篇:服务器中了勒索bingdu怎么处理?中了勒索bingdu的文件怎么恢复?勒索bingdu解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~