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


9

我无法让icacls接受我的群组添加权限。我正在通过以下命令使用高架电源外壳:

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"

Answers:


10

使用双引号而不是单引号:

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

请参阅上面的编辑。这也不起作用。请注意,我收到的是“无效参数”错误,而不是“帐户名称之间没有映射”
user319862 2013年

我只是使用命令提示符而不是Power Shell再次尝试了,它起作用了。不知道存在什么问题,但是感谢正确的语法。
user319862 2013年

抱歉,完全跳过了您使用PS的过程。更新以包括PS 2/3示例。
jscott 2013年

对于抱怨它不起作用的人们,您必须使用“命令提示符”中的命令。该命令在Powershell中不起作用。
Mike G

1

它不会让我对jscott的线程发表评论,但是为了使您的命令在Powershell中正确运行,您必须在整个参数周围加上引号,例如:

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

这将对其中包含空格的组名称以及包括继承权限的命令起作用。

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

如有疑问,请始终在全参数周围加上引号。希望这可以帮助!:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.