Cambiar la configuración de accesibilidad en Mac usando terminal

Me gustaría otorgar permiso de accesibilidad a algunas aplicaciones en Mac usando Terminal según esta instrucción

https://support.apple.com/en-au/HT202866 que es la pestaña de accesibilidad en Preferencias del sistema

O esto

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

Me gustaría hacer eso usando Terminal para poder configurar la instalación de aplicaciones (es decir, BetterSnapTool) para muchas Mac al mismo tiempo, dado que tengo privilegios de administrador y esto debería aplicarse solo en Mavericks y Yosemite

¿Alguien sabe como hacer esto?

Gracias

Respuestas (2)

EDITAR: tenga en cuenta que esto dejó de funcionar en OS X 10.11 El Capitán (vea también el primer comentario aquí)

Los permisos de accesibilidad se almacenan en un archivo de base de datos sqlite en /Library/Application Support/com.apple.TCC/TCC.db.

Dado que sqlite3 se envía de forma predeterminada con la versión posterior de Mac OS X, utilícelo para modificar la configuración.

El esquema de db se ve así:

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);

El nombre de la tabla relevante es "acceso" y el nombre del campo relevante es "permitido". Si Permitido contiene un "1", la aplicación tiene permiso para controlar la computadora, si contiene un "0", no se otorga el permiso.

con el comando

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

puede activar el permiso para todas las aplicaciones enumeradas.

con el comando

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

puede desactivar el permiso para todas las aplicaciones enumeradas.

Este archivo se ha hecho de solo lectura en la última versión de macOS, por lo que ya no es una opción a menos que deshabilite SIP: github.com/jacobsalmela/tccutil/issues/18

La respuesta de klanomath se ve bien, pero si es como yo y no está tan familiarizado con SQL, desea un control más granular (habilitar/deshabilitar aplicaciones individuales en lugar de todas a la vez) o desea una interfaz más clara para trabajar, debe verificar fuera tccutil.py_

Usando tccutil, el comando que le gustaría ejecutar para habilitar una aplicación es

sudo tccutil -e app.bundle.identifier

Por ejemplo, si quisiera habilitar BetterTouchTool, el comando que ejecutaría es

sudo tccutil -e com.hegenberg.BetterTouchTool

Supongo que si quisiera habilitar BetterSnapTool, la última parte sería, com.hegenberg.BetterSnapToolpero no la tengo instalada en mi computadora, así que no puedo verificarla.

Puede encontrar fácilmente el identificador de paquete correcto ejecutándolo sudo tccutil -ldespués de haber instalado la aplicación y se le solicitan permisos de accesibilidad (solo busque el identificador que se asigna a la aplicación a la que desea otorgar permisos). Si eso no funciona del todo (por ejemplo, si el identificador del paquete no es lo que esperaba), puede encontrarlo al ver el contenido del paquete de la aplicación, encontrar el Info.plistarchivo y encontrar el valor de la CFBundleIdentifierclave.

¿Cómo evitamos que una aplicación pregunte todo el tiempo? fe, iTerm2 sigue preguntando, y siempre presiono "Denegar", pero algún tiempo después volverá a preguntar.
para mí, esto funcionó en su lugar:sudo tccutil reset Accessibility