Ändern Sie die Einstellungen für die Barrierefreiheit auf dem Mac mithilfe des Terminals


15

Ich möchte einigen Apps auf dem Mac, die Terminal verwenden, gemäß dieser Anweisung die Berechtigung zur Barrierefreiheit erteilen

https://support.apple.com/en-au/HT202866 Dies ist die Registerkarte für die Barrierefreiheit in den Systemeinstellungen

Oder dieses

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

Ich möchte dies mit Terminal tun, damit ich Apps (dh BetterSnapTool) für viele Macs gleichzeitig installieren kann, vorausgesetzt, ich habe Administratorrechte und dies sollte nur auf Mavericks und Yosemite angewendet werden

Weiß jemand, wie man das macht?

Vielen Dank

Antworten:


8

Die Zugriffsberechtigungen werden in einer SQLite-Datenbankdatei unter / Library / Application Support / com.apple.TCC / TCC.db gespeichert.

Da sqlite3 standardmäßig mit dem späteren Mac OS X ausgeliefert wird, können Sie damit die Einstellungen ändern.

Das Datenbankschema sieht folgendermaßen aus:

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

Der relevante Tabellenname ist "Zugriff" und der relevante Feldname ist "erlaubt". Wenn erlaubt eine "1" enthält, wird der App die Berechtigung zur Steuerung des Computers erteilt. Wenn sie eine "0" enthält, wird die Berechtigung nicht erteilt.

Mit dem Befehl

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

Sie können die Berechtigung für alle aufgelisteten Apps aktivieren.

Mit dem Befehl

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

Sie können die Berechtigung für alle aufgelisteten Apps deaktivieren.


7
Diese Datei wurde in der neuesten macOS-Version schreibgeschützt, daher ist dies keine Option mehr, es sei denn, Sie deaktivieren SIP: github.com/jacobsalmela/tccutil/issues/18
Philipp Spiess

12

Die Antwort von klanomath sieht gut aus, aber wenn Sie wie ich sind und nicht so gut mit SQL vertraut sind, eine genauere Steuerung wünschen (einzelne Apps anstelle aller gleichzeitig aktivieren / deaktivieren) oder eine klarere Benutzeroberfläche für die Arbeit wünschen, sollten Sie dies überprüfen raus tccutil.py.

Verwenden Sie tccutilden Befehl, den Sie ausführen möchten, um eine App zu aktivieren

sudo tccutil -e app.bundle.identifier

Wenn Sie beispielsweise BetterTouchTool aktivieren möchten, lautet der Befehl, den Sie ausführen würden

sudo tccutil -e com.hegenberg.BetterTouchTool

Ich gehe davon aus, dass der letzte Teil, wenn Sie BetterSnapTool aktivieren möchten, nur sein würde, com.hegenberg.BetterSnapToolaber ich habe diesen nicht auf meinem Computer installiert, sodass ich ihn nicht überprüfen kann.

Sie können die richtige Bundle-ID leicht finden, indem sudo tccutil -lSie sie ausführen , nachdem Sie die App installiert und nach Zugriffsberechtigungen gefragt haben (suchen Sie einfach nach der ID, die der App zugeordnet ist, der Sie Berechtigungen erteilen möchten). Wenn dies nicht ganz funktioniert (z. B. wenn die Bundle-ID nicht Ihren Erwartungen entspricht), können Sie sie finden, indem Sie den Inhalt des App-Bundles anzeigen, die Info.plistDatei suchen und den Wert für den CFBundleIdentifierSchlüssel ermitteln.


Wie verhindern wir, dass eine App ständig nachfragt? Zum Beispiel fragt iTerm2 immer wieder und ich drücke immer auf "Verweigern", aber irgendwann später wird es erneut gefragt.
Trusktr

Für mich funktionierte dies stattdessen:sudo tccutil reset Accessibility
Dollar2048
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.