/grant:r
заменит только существующие явные разрешения для данного пользователя или группы. Это не касается унаследованных разрешений. Наследование объектов (OI) и наследование контейнеров (CI) имеют смысл только при работе с папками. Ничто не собирается наследовать разрешения от файла. Кроме того, простого отключения наследования (/inheritance:d
) недостаточно, вам также необходимо удалить существующие разрешения (/inheritance:r
).
Это должно делать то, что вы хотите:
icacls \\$computer\C$\HOMEWARE\newFile.txt /reset
icacls \\$computer\C$\HOMEWARE\newFile.txt /inheritance:r /grant "Users:rx"
Обратите внимание, что это приведет к удалению всех унаследованных разрешений из файла, что может препятствовать резервному копированию и другим операциям управления системой. Как отметил в комментариях eryksun, лучше отключить наследование (превратив унаследованные разрешения в явные разрешения), а затем заменить пользовательский ACE.
icacls \\$computer\C$\HOMEWARE\newFile.txt /reset
icacls \\$computer\C$\HOMEWARE\newFile.txt /inheritance:d /grant:r "Users:rx"
Если вы все еще хотите, чтобы унаследованные разрешения были удалены, а не преобразованы в явные разрешения, я настоятельно рекомендую дополнительно предоставить доступ администраторам и SYSTEM.
icacls \\$computer\C$\HOMEWARE\newFile.txt /reset
icacls \\$computer\C$\HOMEWARE\newFile.txt /inheritance:r /grant "Users:rx" "Administrators:f" "system:f"