从命令行读取DDM管理的Apple软件更新设置(macOS Tahoe 26.2.0)
2025年12月17日
报告DDM设置的一个挑战是,截至macOS Tahoe 26.2.0,目前还没有命令行工具可以报告通过DDM声明进行管理的设置。您可以在受管Mac的“系统设置”中查看已应用的设置,但到目前为止也仅限于此。然而,在某些情况下,Apple会将一些DDM声明的信息写入文件,这些文件可以通过命令行工具读取。我最近发现其中一个声明是 com.apple.configuration.softwareupdate.settings 软件更新设置声明。更多详情请见下文。
我之前有一篇关于软件更新设置声明及其在Jamf Pro蓝图中的使用方法的文章。利用这些信息,我构建并部署了一个包含以下设置的软件更新设置声明:
- 标准用户无法安装Apple软件更新
- 已登录用户将看到所有软件更新通知
- 操作系统更新将自动下载
- 操作系统更新将自动安装
- 安全更新将自动安装
- 将安装快速安全响应更新
- 可以移除快速安全响应更新
部署到受管Mac后,您应该可以通过查看“系统设置”中软件更新设置声明的列表来验证这些设置。
您还可以通过检查以下文件来验证它们:
/var/db/softwareupdate/SoftwareUpdateDDMStatePersistence.plist
在运行macOS Tahoe 26.2.0并应用了这些DDM设置的受管Mac上,SoftwareUpdateDDMStatePersistence.plist 文件应显示类似于下图所示的信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SUCorePersistedStateContentsType</key>
<string>SoftwareUpdateCorePersistedStateFile</string>
<key>SUCorePersistedStateCoreFields</key>
<dict/>
<key>SUCorePersistedStateCoreSecureCodedObjectsFields</key>
<dict/>
<key>SUCorePersistedStateCoreVersion</key>
<string>2.1.0</string>
<key>SUCorePersistedStatePolicyFields</key>
<dict>
<key>SUCoreDDMDeclarationGlobalSettings</key>
<dict>
<key>adminInstallRequired</key>
<integer>1</integer>
<key>automaticallyDownload</key>
<integer>1</integer>
<key>automaticallyInstallOSUpdates</key>
<integer>1</integer>
<key>automaticallyInstallSystemAndSecurityUpdates</key>
<integer>1</integer>
<key>enableGlobalNotifications</key>
<true/>
<key>enableRapidSecurityResponse</key>
<true/>
<key>enableRapidSecurityResponseRollback</key>
<true/>
<key>serializedKeys</key>
<array>
<string>com.apple.RemoteManagement.SoftwareUpdateExtension.GlobalSettings/811362F1-10F1-4D2F-BFB7-F97393F3F44C:Qmx1ZXByaW50XzM3MTllZWRlLTI0MjUtNGE2ZC04YjljLTIyMGViMzMwYWQ2NF9zMV9jMV9zeXNfY2ZnMQ==.NDg5NTdiNjZkYmUwMWM3YzM2MzcwMTJjNTkxZTg4MWM1ZDk3YTNkMWUxZTI1MjI0NTYwMmJlNjQ0MTFmYjdkOA==</string>
</array>
</dict>
</dict>
<key>SUCorePersistedStatePolicySecureCodedObjectsFields</key>
<dict/>
<key>SUCorePersistedStatePolicyVersion</key>
<string>1.0</string>
</dict>
</plist>
|
此后,您可以使用像 PlistBuddy 这样的工具来读取存储在 /var/db/softwareupdate/SoftwareUpdateDDMStatePersistence.plist 文件中的值。例如,以下命令应从 SoftwareUpdateDDMStatePersistence.plist 文件中读取 enableRapidSecurityResponse 键的值。
1
|
/usr/libexec/PlistBuddy -c "Print :SUCorePersistedStatePolicyFields:SUCoreDDMDeclarationGlobalSettings:enableRapidSecurityResponse" /var/db/softwareupdate/SoftwareUpdateDDMStatePersistence.plist
|
如果设置了安装快速安全响应更新,该命令应返回 true 值:
1
2
3
|
username@Z6WCW076MR ~ % /usr/libexec/PlistBuddy -c "Print :SUCorePersistedStatePolicyFields:SUCoreDDMDeclarationGlobalSettings:enableRapidSecurityResponse" /var/db/softwareupdate/SoftwareUpdateDDMStatePersistence.plist
true
username@Z6WCW076MR ~ %
|
据我所知,这种验证方法并未被Apple记录在案,他们可能随时更改它。也就是说,如果您正在寻找一种报告软件更新设置声明配置的方法,那么在macOS Tahoe 26.2.0中,这是一种可行的方式。