Skip to content

FSEvents-Flags erklärt: Jedes Bit dekodiert

Jedes FSEvents-Flag-Bit auf der Platte mit Wert, den Namen in FSEventsParser und mac_apt und wie man Created, Renamed, ItemCloned oder EndOfTransaction liest.

Veröffentlicht am 4 Min. Lesezeit

Kurzfassung. Das Flag-Feld ist ein 32-Bit-Bitsatz in Little-Endian. So gelesen ist Created gleich 0x00000001, Removed 0x00000002, Renamed 0x00000008, Modified 0x00000010, und der Objekttyp steht in den hohen Bits (File 0x00800000, Folder 0x01000000). FSEventsParser liest dieselben vier Bytes als Big-Endian, daher sind seine Konstanten byteweise vertauscht (Created = 0x01000000), bei gleichen Namen. Keiner dieser Werte entspricht Apples API-Werten kFSEventStreamEventFlag*.

Die Tabelle

Die Werte sind der als Little-Endian gelesene u32 (Konvention von mac_apt). Die Spalte FSEventsParser zeigt dasselbe Bit in dessen Big-Endian-Konvention.

Bit (LE)FSEventsParser (BE)Name (FSEventsParser / mac_apt)Bedeutung
0x000000010x01000000CreatedObjekt erstellt
0x000000020x02000000RemovedObjekt entfernt
0x000000040x04000000InodeMetaModInode-Metadaten geändert (z. B. Modus, Zeitstempel)
0x000000080x08000000Renamed / RenamedOrMovedUmbenannt oder verschoben
0x000000100x10000000ModifiedInhalt geändert
0x000000200x20000000ExchangeMit einem anderen Objekt getauscht (atomares Speichern)
0x000000400x40000000FinderInfoModFinder-Info geändert
0x000000800x80000000FolderCreatedOrdner erstellt
0x000001000x00010000PermissionChangeRechte oder Eigentümer geändert
0x000002000x00020000ExtendedAttrModified / XAttrModifiedErweitertes Attribut gesetzt oder geändert
0x000004000x00040000ExtendedAttrRemoved / XAttrRemovedErweitertes Attribut entfernt
0x000010000x00100000DocumentRevisioning / DocumentRevisionVersionsspeicher für Dokumente beteiligt
0x000040000x00400000ItemClonedAPFS-Klon (Copy-on-Write-Kopie), ab High Sierra
0x000800000x00000800LastHardLinkRemovedLetzter Hardlink auf einen Inode entfernt
0x001000000x00001000HardLinkObjekt ist ein Hardlink
0x004000000x00004000SymbolicLinkObjekt ist ein symbolischer Link
0x008000000x00008000FileEvent / FileObjekt ist eine Datei
0x010000000x00000001FolderEvent / FolderObjekt ist ein Ordner
0x020000000x00000002MountAn diesem Pfad wurde ein Volume eingehängt
0x040000000x00000004UnmountVon diesem Pfad wurde ein Volume ausgehängt
0x200000000x00000020EndOfTransactionMarkiert das Ende einer Gruppe zusammengehöriger Änderungen

Andere Bits haben keine dokumentierte Bedeutung. Der FSEvents Parser zeigt sie hexadezimal an, statt zu raten, und FSEventsParser kennzeichnet sie als NOT_USED; tauchen sie in gecarvten Daten auf, deutet das auf einen beschädigten Datensatz hin.

Kombinationen lesen

Ein Datensatz trägt jede Änderung, die fseventsd für diesen Pfad zusammengeführt hat (siehe Zusammenfassung):

  • Created;Modified;FileEvent: Eine Datei wurde geschrieben. Das übliche Bild eines neuen Dokuments oder Downloads.
  • Created;Modified;Removed;FileEvent: eine kurzlebige Datei (temporäre Dateien, Arbeitsdaten eines Installers, eine Datei, die innerhalb desselben Schreibvorgangs erstellt und wieder gelöscht wurde). Die Reihenfolge innerhalb des Datensatzes wird nicht erfasst.
  • Zweimal Renamed;FileEvent, gleiche Node-ID: eine Umbenennung oder Verschiebung; die niedrigere Event-ID ist meist der alte Pfad. Bei 1SLD gibt es keine Node-ID, und die Paarung stützt sich auf aufeinanderfolgende IDs.
  • ExtendedAttrModified bei einem neuen Download: typischerweise das Setzen der Quarantäne- und Herkunftsattribute (where-from).
  • ExtendedAttrRemoved bei entpackten oder heruntergeladenen Objekten: Ein Attribut wurde entfernt. Das Entfernen von com.apple.quarantine ist ein möglicher Grund, siehe Quarantäne-Attribut; viele Apps entfernen Attribute routinemäßig.
  • InodeMetaMod allein: ein chmod, touch oder Eigentümerwechsel; ein heruntergeladenes Hilfsprogramm ausführbar zu machen, sieht oft so aus.
  • Mount;FolderEvent auf Volumes/NAME: An diesem Einhängepunkt wurde ein Volume angeschlossen. Der eigene .fseventsd-Ordner des Volumes protokolliert dann, was darauf geschrieben wurde.
  • ItemCloned: ein APFS-Klon, z. B. ein Duplikat im Finder oder cp -c. Klon und Quelle teilen sich Datenblöcke.

Die API-Konstanten sind andere

Apples dokumentierte FSEventStreamEventFlags (kFSEventStreamEventFlagItemCreated = 0x100, …ItemIsFile = 0x10000 usw.) beschreiben, was eine laufende App von der FSEvents-API erhält. Sie stimmen nicht mit den Bits überein, die in .fseventsd geschrieben werden, wie die Forschung von Nicole Ibrahim und der Quellcode von mac_apt festhalten. Ein Parser, der die API-Tabelle auf Logdateien anwendet, liefert falsche Namen.

Wie der Parser Flags darstellt

Der FSEvents Parser zeigt Änderungs-Flags als beschriftete Chips, den Objekttyp in einer eigenen Spalte sowie den Rohwert (z. B. 0x00800011) und die Namen im Stil von FSEventsParser in der Datensatzansicht und in CSV-Exporten. Der Änderungsfilter gruppiert die Bits in Erstellt, Entfernt, Umbenannt, Geändert/geklont, Metadaten/Attribute und Ein-/Aushängen.

FAQ

Sind die Flags der FSEvents-Logs dieselben wie die Flags der FSEventStream-API?

Nein. Die in .fseventsd-Logs gespeicherten Bits unterscheiden sich von Apples öffentlichen kFSEventStreamEventFlag-Konstanten. Verwenden Sie eine Tabelle, die für das On-Disk-Format erstellt wurde.

Was bedeutet ExtendedAttrRemoved?

Vom Objekt wurde ein erweitertes Attribut entfernt. FSEvents sagt nicht, welches; das Entfernen von com.apple.quarantine ist eine Möglichkeit unter vielen.

Verwandte Artikel