Я хочу заменить права доступа к папке. Сначала я сделал это:
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)
Я что-то пропустил? Это ошибка или по замыслу?