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
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.
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
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
tccutil
den Befehl, den Sie ausführen möchten, um eine App zu aktivierenWenn Sie beispielsweise BetterTouchTool aktivieren möchten, lautet der Befehl, den Sie ausführen würden
Ich gehe davon aus, dass der letzte Teil, wenn Sie BetterSnapTool aktivieren möchten, nur sein würde,
com.hegenberg.BetterSnapTool
aber 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 -l
Sie 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, dieInfo.plist
Datei suchen und den Wert für denCFBundleIdentifier
Schlüssel ermitteln.quelle
sudo tccutil reset Accessibility