MacOS Command-Line – Changing Accessibility Setting using Terminal

accessibilitycommand linemacosprivacy

I would like to grant accessibility permission to some apps on Mac using Terminal as per this intruction

https://support.apple.com/en-au/HT202866 which is the accessibility tab in System Preferences

Or this

http://mizage.com/help/accessibility.html

I would like to do that using Terminal so I can setup to install apps (i.e: BetterSnapTool) for many Mac at the same time, given I have admin privilege and this should be applied only on Mavericks and Yosemite

Does anyone know how to do this?

Thanks

Best Answer

EDIT: please note this stopped working in OS X 10.11 El Capitan (also see first comment here)

The accessibility permissions are stored in a sqlite database file at /Library/Application Support/com.apple.TCC/TCC.db.

Since sqlite3 is shipped by default with the later Mac OS X', use it to modify the settings.

The db scheme looks like this:

sqlite> .schema
CREATE TABLE access (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, allowed INTEGER NOT NULL, prompt_count INTEGER NOT NULL, csreq BLOB, CONSTRAINT key PRIMARY KEY (service, client, client_type));
CREATE TABLE access_overrides (service TEXT PRIMARY KEY NOT NULL);
CREATE TABLE access_times (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, last_used_time INTEGER NOT NULL, CONSTRAINT key PRIMARY KEY (service, client, client_type));
CREATE TABLE admin (key TEXT PRIMARY KEY NOT NULL, value INTEGER NOT NULL);

The relevant table name is "access" and the relevant field name is "allowed". If allowed contains a "1" the app is granted permission to control the computer, if it contains a "0" the permission is not granted.

With the command

sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'UPDATE access SET allowed = "1";'

you can toggle permission on for all apps listed.

With the command

sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'UPDATE access SET allowed = "0";'

you can toggle permission off for all apps listed.