Невозможно назначить групповые разрешения с ICACLS на Windows Server 2012

9

Я не могу получить icacls, чтобы принять мою группу для добавления разрешений. Я использую оболочку повышенной мощности с помощью следующей команды:

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

Я получаю следующую ошибку:

Invalid parameter "Group Foo"

Я тоже пытался использовать SUID, но это тоже не получается. Я также попробовал 'Домен \ Группа Foo'

У меня есть куча файлов, которые я пытаюсь разрешить использовать группе. Как правильно добавить массовые разрешения в Windows Server 2012?

-- РЕДАКТИРОВАТЬ --

E:\> icacls "E:/Contact Numbers.xlsx" /grant:r "Users":f
Invalid parameter "Users"
user319862
источник

Ответы:

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 предлагает новую escape-последовательность --%(тире, тире, проценты), которая экранирует оставшуюся часть строки. Это делает даже сложные внешние параметры простыми.

PS C:\>icacls --% "C:/foo" /grant:r "Users":F
jscott
источник
Смотрите мое редактирование выше. Это тоже не сработало. Обратите внимание, что я получаю ошибки «Неверный параметр», а не «Нет сопоставления между именами учетных записей»
user319862
Я просто попытался снова использовать командную строку вместо Power Shell, и это сработало. Не знаю, в чем проблема, но спасибо за правильный синтаксис.
user319862
Извините, полностью пропустил, что вы использовали PS. Обновлен для включения примеров PS 2/3.
Jscott
Для тех, кто жалуется, что это не работает, вы должны использовать команду в командной строке. Команда не работает в powershell.
Майк Дж
1

Он не позволит мне комментировать поток jscott, но для правильной работы вашей команды в Powershell вам придется добавлять кавычки вокруг всего параметра, как таковой:

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

Это будет работать для имен групп, в которых есть пробелы, а также для команд, включая наследование разрешений.

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

В случае сомнений всегда применяйте кавычки вокруг полного параметра. Надеюсь это поможет! :)

Джош Вэнс
источник