6

У меня есть это, я уверен, что это немного грубовато, но делает свою работу, дает мне все права на файлы и папки на диске при запуске на диске, теперь мне нужна помощь, чтобы он попал в подкаталоги, поэтому мне не нужно скопировать скрипт bat внутри каждой папки и запустить его.

takeown /f *
icacls * /grant Administrator:F
icacls * /grant Administrators:F
icacls * /grant SYSTEM:F
icacls * /grant "Authenticated Users":F

Как я могу заставить его рекурсивно пересекать диск?

2 ответа2

7

Краткий ответ: добавьте /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% потому что я нахожусь в домене, и это делает его частью моего перемещаемого профиля, поэтому он будет включен и готов к использованию на любом компьютере, к которому я подключаюсь.

1

Будет ли это работать для сетевых ресурсов?

Takeown /f *
icacls * /grant Administrator:F
icacls * /grant Administrators:F
icacls * /grant SYSTEM:F
icacls * /grant "Authenticated Users":F
icacls * /grant "doamin\users":R

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .