Wie kann ich Plist-Änderungen feststellen, während ich die Systemeinstellungen ändere, um sie das nächste Mal zu automatisieren?

Ich versuche, den Prozess der Einrichtung eines neuen Laptops so weit wie möglich zu automatisieren. Es gibt bestimmte Änderungen, die ich auf einem neuen Mac immer manuell vornehme, z. B. das Aktivieren des Bildschirmzooms mit dem CtrlModifikator und das Einrichten von Tastaturkürzeln, um ⌘⌥← in allen Anwendungen auf „Vorherigen Tab auswählen“ abzubilden. Ich bin mir sicher, dass es dafür ein preferences.writeÄquivalent gibt, aber meine Güte, ich habe keine Ahnung, wie ich feststellen soll, was es ist. Kann ich meine Einstellungen irgendwie überwachen oder "differenzieren", nachdem ich die Änderung vielleicht manuell vorgenommen habe?

~/Library/Preferences/.GlobalPreferences.plist

Antworten (3)

Apple speichert jetzt die wichtigsten Einstellungen in einer Datenbank, daher ist es am besten, plist-Dateien im Dateisystem zu ignorieren und sich auf die Ausgabe von defaults read com.apple.whateverfür die Dinge zu konzentrieren, die Sie ändern. Leider gibt es keinen guten Rosetta Stone, der sagt, ob Sie Präferenz X haben - suchen Sie nach Änderungen in diesen sieben Präferenzdomänen. Wo Apple iCloud- oder Sicherheitsinformationen speichert, wird nicht jedem visuellen Symbol in den Systemeinstellungen zugeordnet, sodass Sie mehr als eines ausgeben müssen, defaults readum den gesamten Status der meisten Einstellungsfenster zu erfassen, da die meisten Fenster in mehr als eine Einstellungsdomäne schreiben.

Alternativ könnten Sie einfach MDM und Konfigurationsprofile und Skripte verwenden, um alle Änderungen vorzunehmen, sodass Sie die Änderungen einfach von Ihrem Verwaltungstool auf alle Maschinen übertragen und den gesamten Reverse-Engineering-Prozess vollständig überspringen.

In der Vergangenheit war MCX der Weg zur Verwaltung von Unternehmenskonfigurationen, und das entspricht dem Wunsch, sich die .plist-Dateien anzusehen, die diese Einstellungen ursprünglich zu Beginn von OS X gespeichert haben – aber das aktuelle System von Konfigurationsprofilen, Skriptänderungen und MDM-Hooks hat MCX und .plist nur in den verstaubten Ecken belassen, die nicht aktualisiert wurden, damit die neue zentrale Datenbank Benutzer- und Systemvorgaben speichert.

Wenn Sie die Datei kennen, die geändert wird, können Sie die Ausgabe vorher/nachher im Terminal vergleichen, um den genauen Namen der Einstellung zu finden. Zum Beispiel:

/usr/libexec/PlistBuddy -c Print ~/Library/Preferences/.GlobalPreferences.plist > /tmp/before.txt

Und diff /tmp/before.txt /tmp/after.txtum zu sehen, wie die Artikel geändert werden. Aber seien Sie vorsichtig, denn es ist wahrscheinlich, dass die Einstellung, die Sie ändern, in der hierarchischen Struktur begraben wird.

Wenn Sie die Datei, die geändert wird, noch nicht kennen, können Sie den Ordner „Library/Preferences“ mit überwachen, ls -lFatum die zuletzt geänderten Dateien zuerst aufgelistet zu sehen, und Sie können wahrscheinlich von dort aus feststellen, an welcher Datei Sie interessiert sind.

Der beste Weg, den ich gefunden habe, ist

  1. Ausführen opensnoop(ein in macOS enthaltenes Programm, das anzeigt, welche Dateien geöffnet sind)
  2. Ändern Sie Ihre Einstellungen und beobachten Sie, auf welchen PreferencesOrdner zugegriffen wird
  3. Gehen Sie zu diesem Ordner und sortieren Sie ihn nach Änderungszeit
  4. defaults read file.plistauf alles Verdächtige.