Я не могу заставить 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"
Используйте двойные кавычки вместо одинарных:
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 предлагает новую escape-последовательность --%
(тире, тире, процент), который экранирует оставшуюся часть строки. Это упрощает даже сложные внешние параметры.
PS C:\>icacls --% "C:/foo" /grant:r "Users":F
Это не позволит мне комментировать поток jscott, но для того, чтобы ваша команда работала правильно в Powershell, вам нужно будет добавить кавычки вокруг всего параметра, как такового:
C:\> icacls .\foo /grant:r "Users:F"
Это будет работать для имен групп, в которых есть пробелы, а также для команд, включая наследование разрешений.
C:\> icacls .\foo /grant:r "Remote Desktop Users:(OI)(CI)(F)"
В случае сомнений всегда заключайте в кавычки весь параметр. Надеюсь это поможет! :)