Замените разрешения для папок на icacls

2309
liamZ

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

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
Я не могу найти авторитетный источник, который объясняет, почему команда `grant: r` не заменяет * все * разрешения для указанного пользователя. Мое * предположение * заключается в том, что администраторам нужен способ заменить конкретное разрешение + наследование ACE (например, предоставить только чтение файлам), не затрагивая (или не изменяя) другие разрешения. Кажется, ключи `/ reset` или` / remove` предусмотрены для случая, когда все права пользователя должны быть заменены. Я согласен, что текст справки для `/ grant: r` не является исчерпывающим по своей функции. Twisty Impersonator 6 лет назад 0

1 ответ на вопрос

1
Twisty Impersonator

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

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

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

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

Похожие вопросы