Назад | Перейти на главную страницу

Некоторые приложения случайно меняют разрешения в папке «Все пользователи / данные приложения» примерно на 500 ПК. Как мне восстановить настройки Windows по умолчанию?

Во время бета-тестирования клиент установил некоторое наше программное обеспечение, которое случайно изменило разрешения All Users/Application Data папка примерно на 500 компов. Они развернули программное обеспечение с помощью Altiris. Разрешения были изменены и начали вызывать проблемы для таких приложений, как антивирусное программное обеспечение, которое хотело записывать данные в эту папку.

Изменение разрешения не было рекурсивным. В качестве теста мы создали версию программного обеспечения, которую они могли установить в качестве патча, что дало «всем» пользователям полный контроль. Это решило проблемы с антивирусным программным обеспечением, но теперь разрешения небезопасны.

В моем создателе инструмента MSI (Advanced Installer) я могу очень близко подойти к репликации настроек Windows по умолчанию, за исключением записи, обозначенной зеленой стрелкой ниже.

альтернативный текст http://www.blakerobertson.com/storage/perm/ApplyOnlyToFolders.png

Какие-нибудь советы от системных администраторов о том, как они будут сбрасывать разрешения? Заказчик может использовать программное обеспечение управления Altiris для выполнения своего рода служебной программы, если кто-то о ней знает.

Пытаться xcacls.vbs (http://support.microsoft.com/kb/825751). Это бесплатная утилита командной строки VBScript от Microsoft, похожая на команду cacls, но с большим количеством параметров. У него есть возможность применять более детальные разрешения, чем у cacls, но внимательно прочтите инструкции (отображаемые при вводе команды без каких-либо параметров: cscript xcacls.vbs); они довольно сложные! Это делает иметь возможность применять разрешения только к «этой папке и подпапкам»; Я использовал его раньше, чтобы делать именно это.

Если вы используете Windows Vista или более позднюю версию, включенный icacls утилита (http://technet.microsoft.com/en-us/library/cc753525(WS.10).aspx) может быть более подходящим.

Создав нужную команду (с помощью любого инструмента), поместите ее в сценарий * .cmd, а затем добавьте сценарий в объект групповой политики, чтобы применить его к машинам через групповую политику. Обратите внимание, что вам также придется как-то загрузить xcacls.vbs на каждую машину, если вы пойдете по этому маршруту. Этого можно добиться, включив команду для загрузки сценария xcacls.vbs из общего файлового ресурса и сохранения его локально в том же сценарии * .cmd, в котором находится ваша команда установки разрешений (или вы могли бы попробовать запустить его непосредственно из общего файлового ресурса. ).

Вот результирующий код, основанный на предложении Джея Мишо.

В итоге я добавил настраиваемое действие в свой установщик. Это произошло после того, как файлы были скопированы. Если вы это сделаете, вам понадобится этот код ниже и вы захотите передать его в качестве аргументов: APPDIR | CommonAppDataFolder. (да, это трубка, разделяющая их)

dim XCACLS_EXEC, APPDATAFOLDER, WindowStyle

' COMMENT OUT THIS SECTION IF NOT RUNNING AS AN INSTALLER CUSTOM ACTION,
' SET XCACLS_EXEC and APPDATAFOLDER variables some other way.
actdata = Session.Property("CustomActionData")
tokens = Split( actdata, "|", -1)
XCACLS_EXEC = tokens(0) & "XCACLS.vbs"
APPDATAFOLDER = tokens(1)

WindowStyle=0 '0 for hide, 1 for show.
set objShell = CreateObject("WScript.Shell")

'MsgBox  XCACLS_EXEC & " " & APPDATAFOLDER & " " & Session.Property("CustomActionData")

objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /SPEC C /G users:W", WindowStyle, True
objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G users:X", WindowStyle, True
objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G ""Power Users"":M", WindowStyle, True
objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G ""CREATOR OWNER"":F", WindowStyle, True
objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G Administrators:F", WindowStyle, True
objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G Administrator:F", WindowStyle, True
objShell.Run "cscript """ & XCACLS_EXEC & """ """ & APPDATAFOLDER & """ /E /G SYSTEM:F", WindowStyle, True

Вы можете легко исправить это с помощью GPO.

Если они хотят использовать Altiris, настройте задание на использование cacls.exe для сброса прав для папки.