Ändern Sie die Einstellungen für die Barrierefreiheit auf dem Mac über das Terminal

Ich möchte einigen Apps auf dem Mac mithilfe von Terminal die Zugriffsberechtigung gemäß dieser Anleitung erteilen

https://support.apple.com/en-au/HT202866 , das ist die Registerkarte „Barrierefreiheit“ in den Systemeinstellungen

Oder dieses

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

Ich würde das gerne mit Terminal machen, damit ich Apps (z. B. 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 das geht?

Vielen Dank

Antworten (2)

BEARBEITEN: Bitte beachten Sie, dass dies in OS X 10.11 El Capitan nicht mehr funktioniert (siehe auch den ersten Kommentar hier)

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

Da sqlite3 standardmäßig mit dem neueren Mac OS X ausgeliefert wird, verwenden Sie es, um die Einstellungen zu ändern.

Das db-Schema sieht so 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 "access" und der relevante Feldname ist "allowed". Wenn „erlaubt“ eine „1“ enthält, erhält die App die Berechtigung, den Computer zu steuern, 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 aufgeführten 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.

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

Die Antwort von klanomath sieht gut aus, aber wenn Sie wie ich sind und mit SQL nicht so vertraut sind, eine genauere Steuerung (Aktivieren/Deaktivieren einzelner Apps statt aller auf einmal) oder eine übersichtlichere Benutzeroberfläche wünschen, sollten Sie dies überprüfen aus tccutil.py.

Wenn tccutilSie verwenden, lautet der 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, würden Sie den Befehl ausführen

sudo tccutil -e com.hegenberg.BetterTouchTool

Ich gehe davon aus, dass, wenn Sie BetterSnapTool aktivieren wollten, der letzte Teil nur wäre, com.hegenberg.BetterSnapToolaber ich habe das nicht auf meinem Computer installiert, daher kann ich es nicht überprüfen.

Sie können die richtige Bundle-ID leicht finden, indem Sie sie ausführen, sudo tccutil -lnachdem Sie die App installiert haben und sie nach Zugriffsberechtigungen gefragt wird (suchen Sie einfach nach der ID, die der App zugeordnet ist, der Sie Berechtigungen erteilen möchten). Wenn das 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 finden.

Wie verhindern wir, dass eine App ständig fragt? z. B. fragt iTerm2 immer wieder, und ich drücke immer auf "Verweigern", aber einige Zeit später wird es erneut fragen.
bei mir hat das stattdessen funktioniert:sudo tccutil reset Accessibility