Cipher Log

Chronicles in Language, Technology, and Law

macOS Microphone/Camera Permissions and A/V software

December 23, 2020

On recent versions of macOS, especially Catalina, the Camera and Microphone settings cannot be manually managed. Applications need to request permission instead. However, many applications still direct you to the Settings panel to manually add permissions, rather than requesting them through the Application Programming Interface ("API"). This means that, in many cases, it is effectively impossible to add permissions for these applications. However, there are two work-arounds.

UPDATE 17 January 2021: Apparently this has to do with having System Integrity Protection disabled, in which case the prompt for permissions itself will be disabled. Re-enabling SIP may allow Zoom and other apps to request access.

UPDATE 15 January 2021: The rest of this blog post still explains how to fix this issue in more detail. However, as a more expedient solution, you can use the following generator to build a command to fix the problem. Just copy and paste the result into Terminal.app and press return.

Enable camera and microphone permissions for:




Easy temporary work-around

The first work-around is temporary but easy: start the application from the Terminal. Since Terminal.app knows about Apple's internal APIs, it will request Camera and Microphone access appropriately. For example, open Terminal.app and run:

/Applications/zoom.us.app/Contents/MacOS/zoom.us

This should work immediately, with Terminal.app requesting permissions for the Microphone or Camera if it doesn't have them already.

Harder permanent work-around

The second method is to manually open the permissions database and insert the permissions for your application directly. This will be a little easier if you have some experience with SQL databases already, but it isn't necessary.

To do this the right way, we will first need the bundle identifier of the application.

cat /Applications/zoom.us.app/Contents/Info.plist | grep -A1 CFBundleIdentifier | grep string | sed 's/\///g' | sed 's/<string>//g'

Resulting in...

            us.zoom.xos

We will also need to get the current Unix time on your system, so the database doesn't seem all jacked up to any security software that might monitor it.

date +%s

Which gives you...

1608768712

Now we can use that bundle identifier (in this case, us.zoom.xos) and that Unix time stamp (in this case 1608768712) to manually give permissions.

sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db

Now that we're editing the permissions database, we need to insert permissions settings for the app in question.

First, Microphone permissions (NOTE: using the bundle identifier and the Unix time stamp we got above):

INSERT INTO access VALUES('kTCCServiceMicrophone', 'us.zoom.xos', 0, 1, 1, NULL, NULL, NULL, 'UNUSED', NULL, 0, 1608768712);

And now the Camera permissions (again using the bundle identifier and the Unix time stamp we got above):

INSERT INTO access VALUES('kTCCServiceCamera', 'us.zoom.xos', 0, 1, 1, NULL, NULL, NULL, 'UNUSED', NULL, 0, 1608768712);

Don't forget to exit the database

.exit

Now your application should work flawlessly.

0 Comment(s)

Post a Comment