我无法让 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)"
如有疑问,请始终将完整参数括在引号内。希望这能有所帮助!:)