macOS:隐私设置与数据库相关的问题

Posted afatgoat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了macOS:隐私设置与数据库相关的问题相关的知识,希望对你有一定的参考价值。

简介

自从 macOS 开始引入了隐私设置之后,就有了层出不穷的各种问题,比如 App 无法开启摄像头,微信无法开麦克风, qq 无法录屏等等等。

在 macOS 系统中,隐私服务设置,也被称作 TCC,是Transparency, Consent, and Control 的缩写,是自从 macOS Mojave 开始引入的一个系统级别的安全概念。它的理念是,在没有用户明确同意之前,一个 app 不准许访问用户资源,包括硬件资源,如摄像头、麦克风、定位、屏幕录制、蓝牙、HomeKit等,或者软资源,如:照片库、日历,文件夹、辅助功能、以及牵扯到包含个人隐私的第三方应用库文件等等。

这是 macOS 重视个人隐私的一个重要的进步。但是同时也为用户使用带来了不少的麻烦。有了这个系统级别的功能,app 需要升级以适应这个要求。当然,自从发布(2018 年 9 月 24 日)到现在已经是有两年多了,需要的app 都已经升级适配了,但是依然由于各种原因,用户依然会碰到各种意想不到的问题。

本文试图梳理一下已知的潜在问题解决和一些知识点,供分析。

TCC 数据库:

TCC 数据库,根据使用范围,有两个存放地点,一个是本地资源库,另一个是用户资源库目录

本地资源库主要是对硬件资源的访问;而用户资源库当然就是与用户数据相关的记录

本地资源库

目录在:"/Library/Application Support/com.apple.TCC"

如果这个目录及其内部的 sqlite 3 的数据库的文件属性和权限设置错误,会导致无法设置。系统默认的是:

% ls -la "/Library/Application Support/com.apple.TCC"
total 128
drwxr-xr-x@  5 root  wheel    160 Dec 20 21:52 .
drwxr-xr-x  11 root  admin    352 Dec 20 20:04 ..
drwxr-xr-x   2 root  wheel     64 Dec 20 19:59 AdhocSignatureCache
-rw-r--r--   1 root  wheel   7337 Dec 20 20:03 MDMOverrides.plist
-rw-r--r--   1 root  wheel  57344 Dec 20 21:52 TCC.db

用户资源库

目录是:"$HOME/Library/Application Support/com.apple.TCC"

% ls -la "$HOME/Library/Application Support/com.apple.TCC" 
total 160
drwxr-xr-x   4 admin  staff    128 Dec 19 00:48 .
drwx------+ 55 admin  staff   1760 Dec 20 00:18 ..
drwxr-xr-x   2 admin  staff     64 Oct 24  2019 AdhocSignatureCache
-rwxr--r--   1 admin  staff  81920 Dec 19 00:48 TCC.db

如果是权限等出了问题,可以依照上面的更改

 

数据库错误

很少的情况是,tcc 数据库本身错误,比如由于上面所述的权限错误导致的,在系统升级时,无法同时升级 TCC 库导致的新tcc 服务无法正确访问旧的 TCC 库的问题。

解决的方法,一方面可以参加后面的重置隐私的操作;也可以,创建一个新的账户,把系账户中的 TCC 库复制出来的办法。

 

隐私服务问题

运行下面的命令:

launchctl list | grep -i com.apple.tccd

如果没有得到一行输出显示有 “com.apple.tccd”,那么可以断定隐私服务没有启动或正常运行,尝试下面的命令行可以启动该服务:

launchctl load -wF /System/Library/LaunchAgents/com.apple.tccd.plist

 

重置隐私

macOS 系统提供了一个简单的隐私服务的重置应用 tccutil。macOS 用户可以使用它把隐私服务全部或者部分重置。

重置全部的隐私设置:

tccutil reset ALL

重置某个 app 相关的全部隐私设置:

tccutil reset ALL "app的BundleIdentifier"

例如微信的BundleIdentifier是com.tencent.xinWeChat,那么命令是:tccutil reset ALL com.tencent.xinWeChat

重置某个 app 相关的某个隐私设置:

tccutil reset "serviceName" "app的BundleIdentifier"

比如,重置 VLC Player 对于用户桌面的访问权限,就用:tccutil reset SystemPolicyDesktopFolder org.videolan.vlc

现在已知的但不全的服务名称有:Accessibility, AddressBook, All, AppleEvents, Calendar, Camera, ContactsFull, ContactsLimited, Facebook, FileProviderDomain, FileProviderPresence, LinkedIn, Liverpool, Location, MediaLibrary, Microphone, Motion, Photos, PhotosAdd, PostEvent, Reminders, ScreenCapture, ShareKit, SinaWeibo, Siri, SpeechRecognition, SystemPolicyAllFiles, SystemPolicyDesktopFolder, SystemPolicyDeveloperFiles, SystemPolicyDocumentsFolder, SystemPolicyNetworkVolumes, SystemPolicyRemovableVolumes, SystemPolicySysAdminFiles, SysyemPolicyDownloadsFolder, TencentWeibo, Twitter, Ubiquity, Willow

隐私与配置描述文件

对于使用 MDM 系统管理 Mac 的企业来说,使用描述文件来管理企业 Mac 的隐私设置是一个必须的选择,比如,部署远程管理共享,就需要使用描述文件。

Github 上有一个开源的工具,叫做 PPPC Utility,用它可以生成相关的配置描述文件,配合 MDM 系统,可以轻松部署到位。

以上是关于macOS:隐私设置与数据库相关的问题的主要内容,如果未能解决你的问题,请参考以下文章

macOS:隐私设置与数据库相关的问题

有没有办法像我们在 iOS 中那样在 macOS 下将用户发送到应用程序的隐私设置?

macOS 10.12,解决如何打开隐私中的任何来源方法

MacOS 10.12安全与隐私没有允许任何来源的app选项解决办法

深度学习核心技术精讲100篇(五十三)-机器学习中的隐私保护

macOS软件安装常见问题