Краткий ответ: добавьте /t
к (i)cacls
Длинный ответ:
Вот мой скрипт, который я использую, когда хочу, чтобы файл был доступен любому пользователю. Он включает комментарии о том, что делает каждый флаг. Просто поместите это в командный файл где-нибудь в папке %AppData%
.
REM --v2 -----------------------------------------------------------
takeown /r /d y /f %1
icacls %1 /t /grant Everyone:F
REM takeown /r /d y /f will set the owner to the Administrators group recursively.
REM /t makes it recursive
REM /grant Sets the permision to the following user, replaces existing permissions for the specified uesr.
REM :f Grants full controll permission.
REM ----------------------------------------------------------------
REM --v1 -----------------------------------------------------------
REM cacls %1 /t /e /g Everyone:f
REM /t makes it recursive
REM /e Edits the ACL instead of replaceing it
REM /g Grants permissions to the following users
REM :f Grants full controll permission.
REM ----------------------------------------------------------------
Затем в %AppData%\Microsoft\Windows\SendTo
создайте ярлык для пакетного сценария.
Отредактируйте свойства этого ярлыка и перейдите в Advanced...
и установите флажок Run as Administrator.
Теперь в вашем right click menu -> Send To
вам будет элемент под названием « Fix Permissions
Любой файл или папка, для которой вы Send To
будет иметь группу «Все» с правами Full Access
. Если вы выполните его в папке, он будет рекурсивно проходить через него и применять разрешения ко всем дочерним элементам в папке.
Я сохраняю пакетный файл в папке %AppData%
потому что я нахожусь в домене, и это делает его частью моего перемещаемого профиля, поэтому он будет включен и готов к использованию на любом компьютере, к которому я подключаюсь.