macOS 特定配置
登录窗口
登录窗口是用户在 macOS 上看到的第一个画面。MDM 可以自定义其外观和行为。
显示/隐藏用户
控制哪些用户显示在登录屏幕上。隐藏的用户必须输入用户名才能登录。
| 键 | 类型 | 描述 |
|---|---|---|
HideAdminUsers | Boolean | 在登录窗口中隐藏管理员账户 |
HideLocalUsers | Boolean | 隐藏本地(非网络)用户账户 |
HideMobileAccounts | Boolean | 隐藏移动账户用户 |
IncludeAllNetworkUsers | Boolean | 在登录屏幕上显示所有网络用户 |
ShowFullName | Boolean | 显示全名而非短名称 |
ShowOtherUsers | Boolean | 显示"其他"选项以手动输入用户名 |
登录横幅
在登录窗口上显示自定义消息,通常用于法律声明或可接受使用政策。
| 键 | 类型 | 描述 |
|---|---|---|
BannerText | String | 显示在登录提示上方的自定义文本 |
登录窗口行为
| 键 | 类型 | 描述 |
|---|---|---|
DisableScreenLockImmediate | Boolean | 阻止从登录窗口立即锁定屏幕 |
DisableAutomaticLogin | Boolean | 禁用自动登录(出于安全考虑推荐) |
LoginWindowText | String | 显示在登录窗口底部的页脚文本 |
ShutDownDisabled | Boolean | 隐藏"关机"按钮 |
RestartDisabled | Boolean | 隐藏"重新启动"按钮 |
SleepDisabled | Boolean | 隐藏"睡眠"按钮 |
示例
xml
<dict>
<key>HideAdminUsers</key>
<false/>
<key>HideLocalUsers</key>
<false/>
<key>HideMobileAccounts</key>
<true/>
<key>BannerText</key>
<string>本系统仅供授权用户使用。</string>
<key>ShutDownDisabled</key>
<false/>
<key>RestartDisabled</key>
<false/>
</dict>Dock
Dock 配置控制 macOS Dock 的外观、行为和固定应用。
Dock 项目
指定哪些应用和文件夹显示在 Dock 中。项目通过 bundle identifier 或路径定义。
| 键 | 类型 | 描述 |
|---|---|---|
static-apps | Array | 固定在 Dock 中的应用列表 |
static-others | Array | 固定在 Dock 中的文件夹或文件路径列表 |
static-only | Boolean | 阻止用户添加或移除 Dock 项目 |
Dock 大小和位置
| 键 | 类型 | 描述 |
|---|---|---|
tilesize | Integer | Dock 图标大小,单位为像素(1–128) |
magnification | Boolean | 启用悬停时图标放大效果 |
largesize | Integer | 放大后的图标大小,单位为像素 |
orientation | String | Dock 位置:left、bottom 或 right |
mineffect | String | 最小化动画:genie 或 scale |
minimize-to-application | Boolean | 将窗口最小化到应用图标而非 Dock |
自动隐藏
| 键 | 类型 | 描述 |
|---|---|---|
autohide | Boolean | 自动隐藏和显示 Dock |
autohide-delay | Float | Dock 自动隐藏前的延迟秒数 |
autohide-modifier | String | 启用自动隐藏时,显示 Dock 所需的修饰键 |
示例
xml
<dict>
<key>static-apps</key>
<array>
<string>/Applications/Safari.app</string>
<string>/Applications/Mail.app</string>
<string>/Applications/Calendar.app</string>
<string>/Applications/Microsoft Teams.app</string>
</array>
<key>static-others</key>
<array>
<string>/Applications</string>
<string>~/Downloads</string>
</array>
<key>static-only</key>
<false/>
<key>tilesize</key>
<integer>48</integer>
<key>orientation</key>
<string>bottom</string>
<key>autohide</key>
<true/>
</dict>节能
电源管理设置控制显示器何时休眠、电脑何时休眠以及唤醒行为。
电源设置
| 键 | 类型 | 描述 |
|---|---|---|
Desktop | Dictionary | 设备连接交流电源时的电源设置 |
Portable | Dictionary | 设备使用电池电源时的电源设置 |
DestroyFVKeyOnStandby | Boolean | 在待机时销毁 FileVault 密钥以增强安全性 |
桌面(交流电源)
| 键 | 类型 | 描述 |
|---|---|---|
DisplaySleepTimer | Integer | 显示器休眠前的分钟数(0 = 永不) |
DiskSleepTimer | Integer | 磁盘休眠前的分钟数(0 = 永不) |
SleepDisabled | Boolean | 阻止电脑进入睡眠 |
PowerNap | Boolean | 启用 Power Nap(睡眠时进行后台更新) |
WakeOnLAN | Boolean | 网络活动时唤醒设备 |
AutomaticRestartOnPowerLoss | Boolean | 断电后自动重新启动 |
便携式(电池电源)
与桌面相同的键,在设备使用电池运行时生效。
示例
xml
<dict>
<key>Desktop</key>
<dict>
<key>DisplaySleepTimer</key>
<integer>15</integer>
<key>DiskSleepTimer</key>
<integer>30</integer>
<key>SleepDisabled</key>
<false/>
<key>WakeOnLAN</key>
<true/>
</dict>
<key>Portable</key>
<dict>
<key>DisplaySleepTimer</key>
<integer>5</integer>
<key>DiskSleepTimer</key>
<integer>15</integer>
<key>SleepDisabled</key>
<false/>
</dict>
</dict>软件更新
控制 macOS 如何检查、下载和安装软件更新。
更新行为
| 键 | 类型 | 描述 |
|---|---|---|
AllowPreReleaseInstallation | Integer | 控制测试版软件安装:0 = 不允许,1 = 允许,2 = 仅允许用于生产环境 |
AutomaticCheckEnabled | Boolean | 启用自动更新检查 |
AutomaticDownload | Boolean | 自动下载更新(需要用户批准才能安装) |
ConfigDataInstall | Boolean | 自动安装配置数据更新 |
CriticalUpdateInstall | Boolean | 自动安装安全更新和系统数据文件 |
AutomaticallyInstallMacOSUpdates | Boolean | 自动安装主要 macOS 更新 |
AutomaticallyInstallAppUpdates | Boolean | 自动安装 App Store 应用更新 |
DeferUpdates | Boolean | 在可配置的期限内对用户延迟显示更新 |
DeferPeriod | Integer | 延迟更新的天数(1–90) |
延迟策略
延迟允许 IT 部门在更新到达最终用户之前进行测试。延迟期限从 Apple 发布更新后开始计算。
| 键 | 类型 | 描述 |
|---|---|---|
DeferMajorPeriod | Integer | 延迟主要 macOS 更新的天数 |
DeferMinorPeriod | Integer | 延迟次要 macOS 更新的天数 |
DeferNonOSPeriod | Integer | 延迟非操作系统更新(Safari、XProtect 等)的天数 |
示例
xml
<dict>
<key>AutomaticCheckEnabled</key>
<true/>
<key>AutomaticDownload</key>
<true/>
<key>ConfigDataInstall</key>
<true/>
<key>CriticalUpdateInstall</key>
<true/>
<key>AutomaticallyInstallMacOSUpdates</key>
<false/>
<key>DeferUpdates</key>
<true/>
<key>DeferPeriod</key>
<integer>30</integer>
</dict>系统扩展
系统扩展是内核扩展的现代替代方案。它们在用户空间中运行,提供网络、端点安全和驱动程序功能,无需将代码加载到内核中。
允许系统扩展
系统扩展必须由用户明确允许或通过 MDM 预先批准。每个扩展通过其 bundle identifier 和 team identifier 进行标识。
| 键 | 类型 | 描述 |
|---|---|---|
AllowedSystemExtensions | Dictionary | 将 team identifier 映射到允许的扩展 bundle identifier 数组 |
AllowedTeamIdentifier | String | 扩展开发者的 Apple Developer Team ID |
AllowedBundleIdentifier | String | 系统扩展的 bundle identifier |
系统扩展类型
| 类型 | 描述 |
|---|---|
Network Extension | VPN、内容过滤、DNS 代理、网络代理 |
Endpoint Security Extension | 文件、进程和网络事件监控 |
DriverKit Extension | 在用户空间中运行的硬件驱动程序 |
Serial Extension | 串行设备访问 |
示例
xml
<dict>
<key>AllowedSystemExtensions</key>
<dict>
<key>ABC123DEFG</key>
<array>
<string>com.example.vpn.networkextension</string>
<string>com.example.security.endpoint</string>
</array>
</dict>
</dict>内核扩展
传统内核扩展(kext)在内核空间中运行。Apple 已弃用内核扩展,推荐使用系统扩展,但某些第三方软件仍然需要它们。
允许内核扩展
内核扩展必须通过 team identifier 或 bundle identifier 明确允许。
| 键 | 类型 | 描述 |
|---|---|---|
AllowUserOverrides | Boolean | 允许用户批准额外的内核扩展 |
AllowedTeamIdentifiers | Array | 允许其 kext 的 Apple Developer Team ID 列表 |
AllowedKernelExtensions | Dictionary | 将 team identifier 映射到允许的 kext bundle identifier 数组 |
示例
xml
<dict>
<key>AllowUserOverrides</key>
<true/>
<key>AllowedTeamIdentifiers</key>
<array>
<string>ABC123DEFG</string>
</array>
<key>AllowedKernelExtensions</key>
<dict>
<key>ABC123DEFG</key>
<array>
<string>com.example.legacy.driver</string>
</array>
</dict>
</dict>登录项
登录项是用户登录时自动启动的应用、后台服务和脚本。
托管登录项
MDM 可以在受管理的 macOS 设备上添加、移除或强制设置登录项。
| 键 | 类型 | 描述 |
|---|---|---|
AutoLaunchedApplicationDictionary | Array | 用户登录时要启动的应用列表 |
Hide | Boolean | 启动时隐藏应用窗口 |
Path | String | 应用的完整文件系统路径 |
BundleIdentifier | String | 应用的 bundle identifier |
后台登录项
macOS 还支持在后台运行的登录项(启动代理),无需显示用户界面。
| 键 | 类型 | 描述 |
|---|---|---|
BackgroundLoginItems | Array | 登录时要启动的后台服务列表 |
BundleIdentifier | String | 后台服务的 bundle identifier |
Hide | Boolean | 对用户隐藏该服务 |
示例
xml
<dict>
<key>AutoLaunchedApplicationDictionary</key>
<array>
<dict>
<key>Hide</key>
<false/>
<key>Path</key>
<string>/Applications/Microsoft Teams.app</string>
</dict>
<dict>
<key>Hide</key>
<true/>
<key>Path</key>
<string>/Applications/CompanyPortal.app</string>
</dict>
</array>
</dict>