У меня есть это, конечно, это немного грубо, но свою работу выполняет, дает мне все права на файлы и папки на диске при запуске на диске, теперь мне нужна помощь, чтобы заставить его заходить в подкаталоги, чтобы мне не нужно было копировать скрипт bat в каждую папку и запускать его.
takeown /f *
icacls * /grant Administrator:F
icacls * /grant Administrators:F
icacls * /grant SYSTEM:F
icacls * /grant "Authenticated Users":F
Как мне заставить его рекурсивно обходить диск?
решение1
Короткий ответ: добавить /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
будут иметь группу Everyone, заданные Full Access
разрешения. Если вы выполните это над папкой, он рекурсивно пройдет по ней и применит разрешения ко всем дочерним элементам в папке.
Я сохраняю пакетный файл в %AppData%
папке, поскольку я нахожусь в домене, и это делает его частью моего перемещаемого профиля, поэтому он будет включен и готов к использованию на любом компьютере, к которому я подключусь.
решение2
Будет ли это работать для сетевых ресурсов?
Takeown /f *
icacls * /grant Administrator:F
icacls * /grant Administrators:F
icacls * /grant SYSTEM:F
icacls * /grant "Authenticated Users":F
icacls * /grant "doamin\users":R