题 如何在Windows Server 2012上使用icacls替换权限和内部所有内容?


使用Windows Server 2012 R2和Windows Server 2008 R2。

我有一个名为的文件夹 C:\temp\test 我想授予访问权限 SYSTEM 以及用户和所有文件和子目录,并删除其他内容。我尝试过这个命令,但所有现有权限仍然存在:

现有权限是:

Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         BUILTIN\Users Allow  ReadAndExecute, Synchronize
         BUILTIN\Users Allow  AppendData
         BUILTIN\Users Allow  CreateFiles
         CREATOR OWNER Allow  268435456

我想删除所有ACL,除了 SYSTEM,并添加 <DOMAIN>\<USER>

我试过这个命令:

icacls c:\temp\test /grant:r <DOMAIN>\<USER>:(OI)(CI)F /t

processed file: c:\temp\test
Successfully processed 1 files; Failed processing 0 files

当我看到之后的权限时, <DOMAIN>\<USER> 拥有正确的权限,但所有其他权限仍然存在。我想 /grant:r 替换了所有权限?你知道我需要运行什么命令来删除所有其他权限吗?


15
2018-02-25 11:04




这个命令完全符合我的要求 cacls c:\temp\test /t /g <DOMAIN>\<USER>:F 但是我听说icacls取代了它,有人能告诉我相同的icacls版本产生相同的行为吗? - Mark Allison
/grant:r 仅删除现有的显式权限,而不是从上面的文件夹中继承的权限。你需要包括 /inheritance:r 同样。 - TheCleaner
如果CACLS完成了这项工作,那么没有理由你不能使用它,无论它是否被弃用。 - joeqwerty
@joeqwerty是真的,但感觉很脏。 cacls本身甚至会返回使用icacls的消息,因此必须有一个很好的理由。 NOTE: Cacls is now deprecated, please use Icacls. - Mark Allison
@joeqwerty cacls.exe 可以设置ACL的顺序错误,可能会导致问题(我将此作为读者的练习)。 - Craig


答案:


如提到的是评论,你还必须使用 /inheritance:r 切换到删除继承的权限。

/grant:r 仅删除显式权限。

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /T

也授予 SYSTEM :

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /grant:r SYSTEM:(OI)(CI)F /T

16
2018-02-25 15:11





参数 /grant:r 对我不起作用。我不得不使用 /reset 仅将权限还原为inherintance,然后删除继承的权限。不要忘记用子目录更改子目录 /t 旗。


7
2017-09-15 09:57