Как правильно заказать NTFS ACL с помощью icacls?

У меня есть структура каталогов глубиной 4 подкаталога: [Отдел] -> [Job #] -> [Docs] -> [EMail]

На уровне [Docs] у меня есть 4 группы, унаследованные от root, и одна группа (st_JobDocs). Все наследуют вложенные папки.

st_JobAdmin: grant F
st_Job_R: grant RX
st_JobDocs: grant F
st_ITStorageAdmin: grant F
st_GlobalDeny: deny F

На уровне [Email] я хочу удалить группы st_JobDocs и st_Job_R; keep st_GlobalDeny, st_ITStorageAdmin и st_JobAdmin; и добавьте st_JobDocsEmail:(OI)(CI)(F).

Для этого я запускаю с уровня [Department]:

for /D %%D in (*) do for /D %%F in (%%D\Docs) do icacls "%%F\E-Mail" /inheritance:d
for /D %%D in (*) do for /D %%F in (%%D\Docs) do icacls "%%F\E-Mail" /remove:g "st_Job_R"
for /D %%D in (*) do for /D %%F in (%%D\Docs) do icacls "%%F\E-Mail" /remove:g "st_JobDocs"
for /D %%D in (*) do for /D %%F in (%%D\Docs) do icacls "%%F\E-Mail" /remove:d "st_GlobalDeny""
for /D %%D in (*) do for /D %%F in (%%D\Docs) do icacls "%%F\E-Mail" /grant:r "st_JobDocsEmail":(OI)(CI)(F)
for /D %%D in (*) do for /D %%F in (%%D\Docs) do icacls "%%F\E-Mail" /deny "st_GlobalDeny":(OI)(CI)(F)

Я подумал, удалив st_GlobalDeny и добавив его в конце, чтобы поддерживать соответствие с приоритетом разрешений: Явное Запретить, Разрешить, Унаследованное Запретить, Разрешить. Но по какой-то причине, когда я проверяю вкладку безопасности одной из папок, я получаю сообщение об ошибке:

Разрешение на [dir] упорядочено неправильно, что может привести к тому, что некоторые записи окажутся неэффективными.

Может кто-нибудь помочь мне понять порядок и почему мой неверный? Кроме того, есть ли инструмент командной строки, который исправит порядок?

В качестве дополнительного вопроса, возможно ли удалить только наследование в одной группе вместо всех с помощью icacls и / наследования: d?

Спасибо!

1 ответ

Global Deny не удаляется. В примере сценария в строке /remove:d "st_GlobalDeny" в конце добавлена ​​дополнительная кавычка.

Другие вопросы по тегам