OSX: 禁止iCloud钥匙链?

自从10.9有了一个新的功能叫iCloud钥匙串的,就出现了不少的麻烦。一是在10.9.3之前。好多人出现无限循环地要求用户输入Local items的password问题,还好这个问题Apple官方给出了一个暂时解决办法:OS X Mavericks v10.9.1:重复提示解锁“本地项目”钥匙串。只是没有不是终极修复。还好10.9.3中差点儿不用发愁它了-在我的測试中仅仅幽灵般地出现过一次。

二是,有的企业希望禁止它。可能它们的企业的安全规则禁止把诸如帐户信息/信用卡信息等存储到企业以外的不论什么介质中,尤其是放到网上,尽管Apple声称这个绝对的安全,只是依旧没有打消这种企业的顾虑,也许它们不愿或没有准备好改动内部规则来适应新的技术发展吧。

总之,可以禁止就好了。


而事实上iCloud钥匙串就是保存在用户的~/Library/Keychains中有着一长串类似UUID的目录里面的一个数据库中:


在钥匙链存储(Keychain Access)中,被显示为Local Items。并且与login钥匙链不同。用户无法删除它。曾经Local items与login的加密解密类似都是使用用户的登录password,一旦用户的登录password在其他地方改变(比方管理员能够改变本地用户password,或者AD/OD用户等),系统就会不厌其烦地询问曾经的password来为它们解密。自从10.9.3之后,可能使用了用户认证加密机制而绕过password加密,所以不会出现询问password的问题,只是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 escrowserver地址都屏蔽掉:

#!/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

以上这些都是从网上搜集的信息。没有经过全然測试。

原文地址:https://www.cnblogs.com/jzssuanfa/p/6952649.html