无法在 Windows Server 2012 上使用 ICACLS 分配组权限

无法在 Windows Server 2012 上使用 ICACLS 分配组权限

我无法让 icacls 接受我的组添加权限。我正在使用提升的 power shell 并执行以下命令:

icacls 'C:/foo' /grant:r 'Group Foo':f

我收到以下错误:

Invalid parameter "Group Foo"

我也尝试过使用 SUID,但还是失败了。我还尝试过“Domain\Group Foo”

我有一堆文件,我想允许某个组使用它们。在 Windows Server 2012 中添加大量权限的正确方法是什么?

- 编辑 -

E:\> icacls "E:/Contact Numbers.xlsx" /grant:r "Users":f
Invalid parameter "Users"

答案1

使用双引号代替单引号:

C:\>mkdir foo

C:\>icacls 'C:/foo' /grant:r 'Users':f
'Users': No mapping between account names and security IDs was done.
Successfully processed 0 files; Failed processing 1 files

C:\>icacls "C:/foo" /grant:r "Users":f
processed file: C:/foo
Successfully processed 1 files; Failed processing 0 files

我忘记了您使用的是 Powershell,而不是cmd。混合使用外部命令和引号时,Powershell 会出现一些非常奇怪的情况。以下是使用 Powershell 的几个示例。

PS v2:要传递引号,icacls您必须使用脱字符进行转义。请注意,“F”周围的括号也需要转义。

PS C:\>icacls `"C:/foo`" /grant:r `"Users`":`(F`)

PS v3:版本 3 提供了新的转义序列--%(破折号、破折号、百分号),用于转义行的其余部分。这使得即使是复杂的外部参数也变得简单。

PS C:\>icacls --% "C:/foo" /grant:r "Users":F

答案2

它不允许我对 jscott 的帖子发表评论,但为了使您的命令在 Powershell 中正常运行,您必须在整个参数周围添加引号,如下所示:

    C:\> icacls .\foo /grant:r "Users:F"

这将适用于其中包含空格的组名以及包含继承权限的命令。

    C:\> icacls .\foo /grant:r "Remote Desktop Users:(OI)(CI)(F)"

如有疑问,请始终将完整参数括在引号内。希望这能有所帮助!:)

相关内容