基本介绍
什么是 Entitlements
Entitlements 是 macOS 系统中的一种安全机制,用于定义应用程序可以访问的系统资源和功能。它是一个 XML 格式的属性列表(plist)文件,包含一组键值对,每个键代表一个特定的权限或功能。
在 Electron 应用开发中,entitlements 配置对于 macOS 应用的代码签名和分发至关重要,特别是在启用 hardened runtime 或提交到 Mac App Store 时。
为什么需要 Entitlements
- 安全控制:限制应用对系统资源的访问,提高系统安全性
- 权限管理:明确声明应用需要的特殊权限
- 代码签名要求:macOS 对签名应用有明确的 entitlements 要求
- 应用分发:Mac App Store 和外部分发都需要正确的 entitlements 配置
常用配置项
核心权限配置
代码签名相关权限
<?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>
<!-- 允许即时编译 (JIT) -->
<key>com.apple.security.cs.allow-jit</key>
<true/>
<!-- 允许执行未签名的可执行内存 -->
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<!-- 禁用库验证 -->
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
这些是 Electron 应用最常见的配置项,因为 Electron 应用通常需要:
- JIT 权限来执行 JavaScript 代码
- 未签名可执行内存权限来处理动态代码执行
- 禁用库验证来加载原生模块
网络权限
<dict>
<!-- 允许客户端网络访问 -->
<key>com.apple.security.network.client</key>
<true/>
<!-- 允许服务器网络访问 -->
<key>com.apple.security.network.server</key>
<true/>
</dict>
文件系统权限
<dict>
<!-- 允许读写用户选择的文件 -->
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<!-- 允许读写下载目录 -->
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<!-- 允许访问图片目录 -->
<key>com.apple.security.assets.pictures.read-only</key>
<true/>
<!-- 允许访问音乐目录 -->
<key>com.apple.security.assets.music.read-only</key>
<true/>

最低0.47元/天 解锁文章
1394

被折叠的 条评论
为什么被折叠?



