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
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.
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 tccutil
Sie 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.BetterSnapTool
aber 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 -l
nachdem 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.plist
Datei suchen und den Wert für den CFBundleIdentifier
Schlüssel finden.
sudo tccutil reset Accessibility
Philipp Spieß