自从Mac OS X 10.8的美洲狮开始,Apple引进了一个叫Gatekeeper的技术,用来保护系统免收外来Apps对系统安全的破坏,这也是Apple所作出的技术上对付曾经爆发的被闪回感染的事件。 苹果的官方文档 。
这个设置在System Preferences中的Security中给普通用户一个直观而简单的设置选项:
在这里,给了用户两个苹果认为适合的安全选项,“ 所有Mac App商店下载的软件 ”都是认为安全的,或者“ Mac App商店下载以及特定的开发者的软件 ”被认可安全,因为每个在苹果注册的开发人员都有一个特定的开发人员ID,并可以通过xcode环境对自己开发/发布的软件进行数字签名,Mac系统可以读取/验证每个软件中的这个数字签名是否有效。 当然了最后一个选项是关闭这个安全措施-完全关闭。
据说Mac OS X 10.7.5也引进了这个技术,我还没有安装。
Gatekeeper看上去挺美,可是之通过上面的方式进行配置,是不适用企业环境的,或者说那两个选项在企业环境中不够灵活。
首先,我们在部署或者重新安装系统的时候,目前普遍的方式都是核心系统影像+软件安装包的形式。而核心影像最安全通用的方法也是直接从OS X的安装dmg文件获得,管理员没有机会定制Gatekeeper。
其次,每个企业环境不同,应用软件来源多种多样,不说旧的版本和获得渠道,就说即便是新软件,每个人都可以从开发者那里直接购买,一是因为从App商店购买的软件都是Apps,有好多限制,比如强制适用沙箱技术等;而来第三方开发者完全可以不用向Apple交开发员年费而开发Apple软件,对于这些开发商不能排除在外。
另外,管理员还需要把适合自己企业环境的安全措施, 随时部署到内部,所以也需要灵活的工具来管理。
所以需要有一个有效工具,苹果提供了一个命令行工具叫spctl。
通过这个工具,管理员可以灵活地添加自己的规则(rules),或者打开或者关闭这个功能。
关闭: sudo spctl --master-disable
打开: sudo spctl --master-enable
添加一个规则:sudo spctl --add --label "Good Apps" /Applications/Good.app
sudo spctl --add --label "Bad Apps" /Applications/Bad.app
禁止 一个规则: sudo spctl --disable --label "Bad Apps" /Applications/Good.app
准许 一个规则: sudo spctl --disable --label "Good Apps"
删除一个规则: sudo spctl --remove --label "Good Apps"
检查状态:sudo spctl --status
这些规则存放在一个数据库中/var/db/SystemPolicy,系统还存放了一个最原始的系统数据库/var/db/.SystemPolicy-default,以便管理员可以从头开始配置。