1

Я хочу заменить права доступа к папке. Сначала я сделал это:

icacls folder /grant user:(oi)(ci)f

Затем я хочу изменить разрешения и наследование:

icacls folder /grant:r user:(oi)(io)rx

После этого разрешения для пользователя все еще равны (oi)(ci)f .

Почему не заменяются разрешения?

Замена разрешений и наследования на setacl работает должным образом:

setacl -on folder -ot file -actn ace -ace
"n:user;p:read_ex;i:io,so;m:set;w:dacl"

спасибо за Ваш ответ. Но это по замыслу? Или это ошибка? Какой смысл использовать переключатель ":r", если единственный способ, которым вы можете быть уверены, что вы можете заменить разрешения (и наследование), это?

icacls folder /remove user
icacls folder /grant user:(oi)(io)rx

Я проверял, как работает «icacls /grant», и обнаружил, что icacls пишет запись для каждого типа наследования.

Попробуй это:

md test
icacls test /inheritance:r
icacls test /grant user:f
icacls test /grant:r user:(oi)rx
icacls test /grant:r user:(ci)rx
icacls test /grant:r user:(oi)(ci)rx
icacls test /grant:r user:(ci)(oi)(io)rx
icacls test /grant:r user:(io)(oi)rx
icacls test /grant:r user:(io)(ci)rx

Затем, чтобы увидеть ACL:

icacls test

Результат:

test PC\user:(F)
     PC\user:(OI)(IO)(RX)
     PC\user:(OI)(RX)
     PC\user:(CI)(IO)(RX)
     PC\user:(CI)(RX)
     PC\user:(OI)(CI)(IO)(RX)
     PC\user:(OI)(CI)(RX)

Итак, я обнаружил, что icacls /grant:r заменяет разрешения только для одного и того же типа наследования. На мой оригинальный вопрос:

md test
icacls test /inheritance:r
icacls test /grant user:(oi)(ci)f
icacls test /grant:r user:(oi)(io)rx

Тест icacls дает вывод

test PC\user:(OI)(IO)(RX)
     PC\user:(OI)(CI)(F)

И я думаю, что GUI показывает только (OI) (CI) (F), потому что он включает в себя (OI) (IO) (RX)

Я что-то пропустил? Это ошибка или по замыслу?

1 ответ1

1

Ваша первая команда предоставляет полный доступ к папке «Эта папка, подпапки и файлы».

Разрешения не заменяются второй командой, которая предоставляет разрешения «Чтение и выполнение» для файлов только благодаря использованию комбинации наследования объектов (OI)(IO) . Очевидно, вы не можете заменить разрешения, которые применяются к «Эта папка, подпапки и файлы», разрешениями, которые применяются только к файлам.

Чтобы заменить разрешения «Полный доступ» на «Чтение и выполнение» для «Эта папка, подпапки и файлы», используйте то же наследование объектов во второй команде:

icacls folder /grant:r user:(oi)(ci)rx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .