пакетный скрипт, который предоставляет права администратора и проходит через все файлы и папки

42270
nwgat

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

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

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

6

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

7
Scott Chamberlain

Краткий ответ: добавить /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.

enter image description here

Теперь у right click menu -> Send Toвас будет элемент с именем Fix Permissionsлюбой файл или папка, в которой вы делаете Send To, и группа «Все» будет иметь Full Accessправа доступа. Если вы выполните его в папке, он будет рекурсивно проходить через него и применять разрешения ко всем дочерним элементам в папке.


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

Вы также можете добавить `takeown`. https://gist.github.com/972013 Sathya 12 лет назад 2
@ Сатья очень классный, никогда не знал об этом, я добавляю его в свой сценарий Scott Chamberlain 12 лет назад 0
Хорошо выглядит Скотт! Sathya 12 лет назад 0
как удалить текущие настройки безопасности папок / файлов, прежде чем добавлять новые? nwgat 12 лет назад 0
@wiak, используя `/ grant: r` вместо` / grant`. Я хотел сохранить существующие и добавить «Полный контроль» в группу «Все». Scott Chamberlain 12 лет назад 0
Я придерживаюсь этого точного метода, но [он не работает, как описано здесь] (http://stackoverflow.com/questions/11893844/send-to-a-folder-over-to-a-batch-script-not-behaving -как и ожидалось) laggingreflex 11 лет назад 0
нашел это, он работает намного лучше http://teejee2008.wordpress.com/2012/06/30/fixing-ntfs-file-permissions/ nwgat 11 лет назад 0
@wiak Для меня так просто написать сценарий, я предпочитаю это делать, чем доверять программе, о которой ничего не знаю. Таким образом, я точно знаю, что происходит с моим компьютером (особенно с программой, которую я буду запускать от имени администратора) Scott Chamberlain 11 лет назад 0
1
user259728

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

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