因切换系统导致文件夹权限丢失,里面很多文件都打不开,要重新调整所有人再添加相应权限。想着直接在文件夹上改权限,结果应用时有些没有调回所有人的文件弹出提示“无法枚举容器中的对象 访问被拒绝”。百度到解决方法:https://www.php.cn/windows-451062.html。
首先是在文件夹高级安全设置里面设置所有者。然后勾选“替换子容器和对象的所有者”以及“使用可从此对象继承的权限项目替换所有子对象的权限项目”,再应用就不会再弹提示。
期间还想着通过cmd去批量修改所有权和相应权限,找到了takeown命令和icacls命令。takeown
命令可以修改文件所有者,而icacls
命令可以用于修改文件的权限。
研究了一下icacls
命令,导出了文件的ACL信息
icacls命令导出ACL信息:
icacls .\desktop.png /save .\t.txt
已处理的文件: .\desktop.png
已成功处理 1 个文件; 处理 0 个文件时失败
导出的文件内容
desktop.png
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
看不懂,又找到了介绍的文章http://www.360doc.com/content/11/0214/00/2114136_92836220.shtml。
尝试用命令去修改文件的ACL信息
icacls .\test /restore .\t.txt
/restore
需要传上级文件夹;文件里面需要和导出格式一样,一行文件名,一行属性。
弹出提示“并非所有被引用的特权或组都分配给呼叫方",百度发现是没有管理员权限。
用管理员身份执行命令显示成功执行,但实际上文件的权限并没有改变。试着直接右键属性里面去修改,提示是继承上级文件夹的权限无法修改。
最后直接对使用命令对上级文件夹进行修改的确能够实现修改。