码迷,mamicode.com
首页 > 其他好文 > 详细

OSX: 禁止iCloud钥匙链?

时间:2014-06-22 17:33:07      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:icloud keychain   escrow   keychain   icloud   local items   

自从10.9有了一个新的功能叫iCloud钥匙串的,就出现了不少的麻烦。一是在10.9.3之前,好多人出现无限循环地要求用户输入Local items的密码问题,还好这个问题Apple官方给出了一个临时解决的方法:OS X Mavericks v10.9.1:反复提示解锁“本地项目”钥匙串。不过没有不是终极修复。还好10.9.3中几乎不用发愁它了-在我的测试中只幽灵般地出现过一次。二是,有的企业希望禁止它,可能它们的企业的安全规则禁止把诸如帐户信息/信用卡信息等存储到企业以外的任何介质中,尤其是放到网上,虽然Apple声称这个绝对的安全,不过依然没有打消这样的企业的顾虑,或许它们不愿或没有准备好修改内部规则来适应新的技术发展吧。总之,能够禁止就好了。


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

bubuko.com,布布扣

在钥匙链存储(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钥匙链?,布布扣,bubuko.com

OSX: 禁止iCloud钥匙链?

标签:icloud keychain   escrow   keychain   icloud   local items   

原文地址:http://blog.csdn.net/cneducation/article/details/32563705

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!