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:隐私设置与数据库相关的问题的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法像我们在 iOS 中那样在 macOS 下将用户发送到应用程序的隐私设置?
MacOS 10.12安全与隐私没有允许任何来源的app选项解决办法