Во время бета-тестирования клиент установил некоторое наше программное обеспечение, которое случайно изменило разрешения 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 для сброса прав для папки.