✨macOS应用程序隐私权限

当前macOS版本:12.4

由于 macOS 13 对设置界面进行了较大修改,本文目前确认适用于macOS 12

查看应用程序权限

打开 设置 -> 安全性与隐私 -> 隐私

许多软件都需要授予辅助功能权限

修改应用程序权限

部分分类权限支持直接修改

点击🔒

解锁后可通过 + - 管理相应的应用程序权限

但是部分分类权限并没有 + -

无法在设置直接修改应用程序权限

此时需要借助tccutil命令行工具

✨macOS TCC

TCC(透明度、同意和控制)是 macOS 中的一种机制,通常从隐私角度限制和控制应用程序对某些功能的访问。这可以包括定位服务、联系人、照片、麦克风、相机、可访问性、全盘访问等等。TCC 是随 OSX Mavericks 一起引入的,并且自那以后经历了许多变化以扩大它的控制范围。TCC 似乎也存在并在 iOS 上提供相同的功能,但在这篇文章中,我们将只关注 macOS 上的 TCC。

TCC 是一种最终用户保护功能,当您尝试在没有用户交互的情况下以自动方式配置机器时,往往会妨碍您。RainforestQA 服务的一部分是我们在保持最新的新 VM 中运行所有测试,为此,我们希望尽可能多地自动化 VM 构建过程,并且我们不想照看构建弹出对话框时单击“允许”的过程。相反,我们宁愿有一种可靠的方式来操纵 TCC 以编程方式授予访问权限,而无需人工干预。TCC 没有很好的文档记录,您可以在其中找到的信息分散在网络上,具有不同程度的完整性。

从用户的角度来看,当应用程序想要访问受 TCC 保护的功能之一时,他们会看到 TCC 正在发挥作用。发生这种情况时,系统会提示用户一个对话框,询问他们是否要允许访问。然后将该响应存储在 TCC 数据库中。

更多介绍可参考:

https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive

✨tccutil

使用man tccutil即可查看tccutil命令手册

tccutil(1) General Commands Manual tccutil(1)

NAME

tccutil – manage the privacy database

SYNOPSIS

tccutil command service [bundle_id]

DESCRIPTION

The tccutil command manages the privacy database, which stores decisions

the user has made about whether apps may access personal data.

One command is currently supported:

reset Reset all decisions for the specified service, causing apps to

prompt again the next time they access the service. If a bundle

identifier is specified, the service will be reset for that bundle

only.

EXAMPLES

To reset all decisions about whether apps may access the address book:

tccutil reset AddressBook

tccutil reset All com.apple.Terminal

或者可使用 Onyx

在 实用工具 -> 手册中查阅到tccutil使用说明

或者直接使用搜索引擎

tccutil(1) General Commands Manual tccutil(1)

NAME

tccutil - manage the privacy database

SYNOPSIS

tccutil command service [bundle_id]

DESCRIPTION

The tccutil command manages the privacy database, which stores decisions

the user has made about whether apps may access personal data.

One command is currently supported:

reset Reset all decisions for the specified service, causing apps to

prompt again the next time they access the service. If a bundle

identifier is specified, the service will be reset for that bundle

only.

EXAMPLES

To reset all decisions about whether apps may access the address book:

tccutil reset AddressBook

tccutil reset All com.apple.Terminal

Darwin April 3, 2012 Darwin

✨重置特定应用程序所有权限

tccutil reset service [bundleIdentifier]

要重置特定应用程序

我们先要获取到 bundleIdentifier

mdls -name kMDItemCFBundleIdentifier -r /Applications/${Example.app}

-r 后的具体Application可以直接从Finder直接拖入Terminal

之后运行如下命令可以重置该应用程序所有权限

tccutil reset All ${bundleIdentifier}

例如如下命令可以重置 DaisyDisk 所申请的所有权限(包括上述无法在设置重置的权限)

➜ ~ mdls -name kMDItemCFBundleIdentifier -r /Applications/DaisyDisk.app

com.daisydiskapp.DaisyDiskStandAlone%

➜ ~ tccutil reset All com.daisydiskapp.DaisyDiskStandAlone

Successfully reset All approval status for com.daisydiskapp.DaisyDiskStandAlone

➜ ~

✨重置特定权限

运行如下命令可展示可修改的权限条目

也许不完全正确 没有找到相应的官方文档

适用于 Catalina

strings /System/Library/PrivateFrameworks/TCC.framework/TCC | fgrep kTCCService | fgrep -v ' ' | sed -e s/kTCCService// | sort

适用于 Monterey

strings /System/Library/PrivateFrameworks/TCC.framework/Support/tccd | fgrep kTCCService | fgrep -v ' ' | sed -e s/kTCCService// | sort

在 macOS 12.4 上返回如下条目

➜ ~ strings /System/Library/PrivateFrameworks/TCC.framework/Support/tccd | fgrep kTCCService | fgrep -v ' ' | sed -e s/kTCCService// | sort

Accessibility

AddressBook

All

AlwaysAllowedService.AppleEvents

AppleEvents

BluetoothAlways

BluetoothPeripheral

BluetoothWhileInUse

Calendar

Calls

Camera

ContactsFull

ContactsLimited

DeveloperTool

ExposureNotification

ExposureNotificationRegion

FaceID

Facebook

FallDetection

FileProviderDomain

FileProviderPresence

FocusStatus

GameCenterFriends

KeyboardNetwork

LinkedIn

ListenEvent

Liverpool

MSO

MediaLibrary

Microphone

Motion

NearbyInteraction

Photos

PhotosAdd

PostEvent

Prototype3Rights

Prototype4Rights

Reminders

ScreenCapture

SensorKitAmbientLightSensor

SensorKitBedSensing

SensorKitBedSensingWriting

SensorKitDeviceUsage

SensorKitElevation

SensorKitFacialMetrics

SensorKitForegroundAppCategory

SensorKitKeyboardMetrics

SensorKitLocationMetrics

SensorKitMessageUsage

SensorKitMotion

SensorKitMotionHeartRate

SensorKitOdometer

SensorKitPedometer

SensorKitPhoneUsage

SensorKitSoundDetection

SensorKitSpeechMetrics

SensorKitStrideCalibration

SensorKitWatchAmbientLightSensor

SensorKitWatchFallStats

SensorKitWatchForegroundAppCategory

SensorKitWatchHeartRate

SensorKitWatchMotion

SensorKitWatchOnWristState

SensorKitWatchPedometer

SensorKitWatchSpeechMetrics

ShareKit

SinaWeibo

Siri

SpeechRecognition

SystemPolicyAllFiles

SystemPolicyDesktopFolder

SystemPolicyDeveloperFiles

SystemPolicyDocumentsFolder

SystemPolicyDownloadsFolder

SystemPolicyNetworkVolumes

SystemPolicyRemovableVolumes

SystemPolicySysAdminFiles

TencentWeibo

Twitter

Ubiquity

UserAvailability

UserTracking

WebKitIntelligentTrackingPrevention

Willow

可用如上替换tccutil reset All ${bundleIdentifier}命令中的“All”

例如使用如下命令可以重置隐私权限中的 “自动化”

tccutil reset AppleEvents

但是有些条目看起来似乎不像是某特定权限

也许不太靠谱

因此请谨慎使用

✨重置所有应用程序的所有权限

谨慎使用!

谨慎使用!

谨慎使用!

tccutil reset All

✨参考及引用

https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive

https://apple.stackexchange.com/questions/377531/removing-randomwhere-malwareleadingsignsearch-from-security-privacy-fu/

https://recoursive.com/2020/03/03/reset_macos_privacy_permissions/

⭐转载请注明出处

本文作者:双份浓缩馥芮白

原文链接:https://www.cnblogs.com/Flat-White/p/16448648.html

版权所有,如需转载请注明出处。