Powershell ICACLS更改文件权限

时间:2018-08-30 19:00:18

标签: windows powershell file-permissions icacls

基本上,我要做的是将txt文件推送到远程PC列表中,然后更改该文件的权限,以使本地用户组只能读取和执行。 (我放弃了尝试在保留权限的同时将文件推出)。 PC名称在firstObject文件的不同行中列出。

这是我所拥有的:

ComputerNames.txt

似乎正在复制文件,并且权限得到了重置,但它并未删除任何内容,用户仍然具有写权限和特殊权限。我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

/grant:r只会替换给定用户或组的现有显式权限。它不涉及继承的权限。对象继承(OI)和容器继承(CI)仅在处理文件夹时才有意义。什么都不会从文件继承权限。另外,仅禁用继承(/inheritance:d)还是不够的,您还需要删除现有权限(/inheritance:r)。

这应该做您想要的:

icacls \\$computer\C$\HOMEWARE\newFile.txt /reset
icacls \\$computer\C$\HOMEWARE\newFile.txt /inheritance:r /grant "Users:rx"

请注意,这将从文件中删除 all 继承的权限,这可能会禁止备份和其他系统管理操作。正如eryksun在评论中指出的那样,最好先禁用继承(将继承的权限转换为显式权限),然后替换User ACE。

icacls \\$computer\C$\HOMEWARE\newFile.txt /reset
icacls \\$computer\C$\HOMEWARE\newFile.txt /inheritance:d /grant:r "Users:rx"

如果您仍然希望删除继承的权限,而不是转换为显式权限,我强烈建议您另外为管理员和SYSTEM授予访问权限。

icacls \\$computer\C$\HOMEWARE\newFile.txt /reset
icacls \\$computer\C$\HOMEWARE\newFile.txt /inheritance:r /grant "Users:rx" "Administrators:f" "system:f"