Назад | Перейти на главную страницу

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

У меня есть структура каталогов глубиной 4 подкаталога: [Отдел] -> [Номер задания] -> [Документы] -> [Электронная почта]

На уровне [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

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

Для этого я бегу с уровня [Отдел]:

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 и / inheritance: d?

Спасибо!

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