自从10.9有了一个新的功能叫iCloud钥匙串的,就出现了不少的麻烦。一是在10.9.3之前,好多人出现无限循环地要求用户输入Local items的密码问题,还好这个问题Apple官方给出了一个临时解决的方法:OS
X Mavericks v10.9.1:反复提示解锁“本地项目”钥匙串。不过没有不是终极修复。还好10.9.3中几乎不用发愁它了-在我的测试中只幽灵般地出现过一次。二是,有的企业希望禁止它,可能它们的企业的安全规则禁止把诸如帐户信息/信用卡信息等存储到企业以外的任何介质中,尤其是放到网上,虽然Apple声称这个绝对的安全,不过依然没有打消这样的企业的顾虑,或许它们不愿或没有准备好修改内部规则来适应新的技术发展吧。总之,能够禁止就好了。
而其实iCloud钥匙串就是保存在用户的~/Library/Keychains中有着一长串类似UUID的文件夹里面的一个数据库中:
在钥匙链存储(Keychain Access)中,被显示为Local Items,而且与login钥匙链不同,用户无法删除它。以前Local items与login的加密解密类似都是使用用户的登陆密码,一旦用户的登录密码在其它地方改变(比如管理员可以改变本地用户密码,或者AD/OD用户等),系统就会不厌其烦地询问以前的密码来为它们解密。自从10.9.3之后,可能使用了用户认证加密机制而绕过密码加密,所以不会出现询问密码的问题,不过login钥匙串还没有改变。
苹果的技术说了: No。Apple官方没有也不会讨论禁止它的策略/方法。不过建议可以屏蔽网站。
有人说,在系统偏好中禁止iCloud就可以了,无论是用Profile还是MCX等等技术--其实有人发现,在至今可见的所有的OSX版本中Profile都存在一个"bug",使得即便被admin禁止的系统偏好项目,依然可以被普通用户使用。可是即便是那里禁止了,可以用户依然可能在使用其它软件的时候激活它,比如互联网帐号,mail, 联系簿等等。
苹果建议,在网络上把iCloud给屏蔽了。
1. 经过网上多个admin的尝试,似乎与这些apps有关:
<span style="font-size:18px;">/System/Library/CoreServices/Keychain Circle Notification.app /System/Library/InternetAccounts/iCloud.iaplugin /usr/libexec/KeychainMigrator</span>
可以删除这些程序--本人没有尝试,是从网上其它地方汇集的,操作之前备份,后果自负。
2. 据说下面的脚本可以判断一个用户是否开启了iCloud:
<span style="font-size:18px;">#!/bin/sh OSVersion=$(sw_vers -productVersion) if [ $OSVersion == 10.9 ]; then currUser=$( /usr/bin/who | /usr/bin/awk '/console/{ print $1 }' ) Keychain=$( /usr/libexec/PlistBuddy -c "Print Accounts:0:Services:7:Enabled" "/Users/$currUser/Library/Preferences/MobileMeAccounts.plist" ) echo "<result>$Keychain</result>" else echo "<result>False</result>" fi</span>
3. 这个脚本可以读取保存在当前用户plist文件中的与iCloud有关的网址,并添加到host文件中,来屏蔽它们:
#!/bin/sh #################################################### # # This script checks the url iCloud Keychain uses # and adds a record to the /etc/hosts file to point # it back to itself. # # Written by: Kenny 1/17/14 # ##################################################### # Get the current user. currentUser=`ls -l /dev/console | cut -d " " -f4` echo "$currentUser" # Get the URL iCloud Keychain contacts iCloudKC=`defaults read /Users/$currentUser/Library/Preferences/MobileMeAccounts.plist | grep -A 4 "KEYCHAIN_SYNC" | grep "escrow" | cut -d ':' -f 2 | sed 's/[/]//g'` echo "$iCloudKC" # Append the /etc/hosts file echo "127.0.0.1 $iCloudKC" >> /etc/hosts echo "host file appended"
4. 这个脚本把所有的iCloud escrow服务器地址都屏蔽掉:
#!/usr/bin/env bash HostFile="/private/etc/hosts" ditto -v "$HostFile" /private/etc/hosts.bkup CurrentBlockHosts=$(cat "$HostsFile" | grep -c "icloud") if [[ "$CurrentBlockHosts" -eq 25 ]]; then exit 0 elif [[ "$CurrentBlockHosts" -eq 0 ]]; then echo "##" >> "$HostFile" echo "# Block the following hosts" >> "$HostFile" echo 127.0.0.1 icloud.com >> "$HostFile" for (( i = 1; i < 10; i++ )); do echo "127.0.0.1 p0$i-escrowproxy.icloud.com" >> "$HostFile" echo "127.0.0.1 p0$i-escrowservice.icloud.com" >> "$HostFile" done for (( i = 10; i < 25; i++ )); do echo "127.0.0.1 p$i-escrowproxy.icloud.com" >> "$HostFile" echo "127.0.0.1 p$i-escrowservice.icloud.com" >> "$HostFile" done else logger "[iCloudBlocker] Found $CurrentBlockHosts iCloud entries" fi exit 0
以上这些都是从网上搜集的信息,没有经过完全测试。
OSX: 禁止iCloud钥匙链?