Warum wirkt sich meine "rootless.conf" nicht immer auf die Auswahl von SIP aus, welche Dateien die "eingeschränkte" Flag-Behandlung erhalten?

8

Was Quellen sagen

Wie alle anderen /System/Library/Sandbox/rootless.confenthält meine Datei die folgenden Einträge:

$ cat /System/Library/Sandbox/rootless.conf
[…]
        /System
[…]
*       /System/Library/Extensions
        /System/Library/Extensions/*
[…]

Alle Quellen zu dem Thema, das ich gefunden habe (Beispiel 1 2 3 ), scheinen darauf hinzudeuten, dass rootless.confdiese Einträge gemäß den Regeln von beim Start erzwungen werden und grob wie folgt interpretiert werden können:

  1. Innerhalb der /SystemHierarchie darf kein Prozess in eine Datei oder einen Ordner schreiben, es sei denn, eine spezifischere Regel gewährt einen solchen Zugriff.

  2. Im Inneren/System/Library/Extensions kann jeder Prozess mit Root-Rechten neue Dateien und Unterordner erstellen.

  3. Es ist jedoch keinem Prozess gestattet, vorhandene Dateien oder Unterordner darin zu ändern oder zu löschen /System/Library/Extensions.

Was ich eigentlich beobachte

Als ich mir jedoch den tatsächlichen Inhalt von ansah /System/Library/Extensions, entdeckte ich zu meiner Überraschung mehrere Dateien und Ordner, die trotz aktivem SIP perfekt beschreibbar und löschbar sind:

$ csrutil status
System Integrity Protection status: enabled.
$ ls -lAO /System/Library/Extensions | tail -16
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 corecrypto.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 exfat.kext
drwxr-xr-x  3 root  wheel  -            102 19 Aug  2013 hp_Inkjet9_io_enabler.kext
drwxr-xr-x  3 root  wheel  -            102 27 Apr  2013 hp_fax_io.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 iPodDriver.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 mcxalr.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 msdosfs.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 ntfs.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 pmtelemetry.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 pthread.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 smbfs.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 triggers.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 udf.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 vecLib.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 webcontentfilter.kext
drwxr-xr-x@ 3 root  wheel  restricted   102 20 Apr  2016 webdav_fs.kext

Beachten Sie, dass hp_Inkjet9_io_enabler.kextund hp_fax_io.kextDrittanbieter - Kernel - Erweiterungen sind , die ich zu der Zeit zu El Capitan aktualisiert bereits vorhanden waren (die ich im Mai tat 2016).

Wenn ich die Liste der SIP-Ausnahmen unter durchsuche, werden die dort aufgeführten /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/pathsErweiterungen von Drittanbietern ebenfalls nicht angezeigt:

$ defaults read /System/Library/Sandbox/Compatibility.bundle/Contents/Info.plist CFBundleVersion
12.0
$ grep Extensions /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleRTL815XComposite109.kext
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleRTL815XEthernet109.kext

Ich habe über ein Dutzend weitere Kernel-Erweiterungen gefunden, denen auch das restrictedFlag und das com.apple.rootlessAttribut fehlen . Alle betroffenen Kernel-Erweiterungen scheinen Erweiterungen von Drittanbietern zu sein, die ich im Laufe des letzten Jahrzehnts installiert habe, und haben anscheinend das Update auf El Capitan überlebt.

Was mich über die folgenden Rätsel wundern lässt:

Was ich gerne wissen würde

Q1. Fehlende Flaggen

Wie kommt es, dass keine Kernel-Erweiterung eines Drittanbieters - und tatsächlich keine Datei, die ich manuell erstelle /System/Library/Extensions- jemals ein restrictedFlag oder ein com.apple.rootlessAttribut erhält , obwohl die rootless.confRegel das Gegenteil zu verlangen scheint?

Zum Beispiel zeigt a ls -dlOentlang der hp_fax_io.kextPfadkette:

$ ruby -rpathname -e 'puts Pathname.new("/System/Library/Extensions/hp_fax_io.kext").enum_for(:ascend).to_a' | xargs ls -dlO
drwxr-xr-x   39 root  wheel  -           1394 19 Jan 11:36 /
drwxr-xr-x@   4 root  wheel  restricted   136 19 Jan 11:29 /System
drwxr-xr-x   80 root  wheel  restricted  2720 10 Jan 19:19 /System/Library
drwxr-xr-x  297 root  wheel  sunlnk     10098 22 Jan 00:57 /System/Library/Extensions
drwxr-xr-x    3 root  wheel  -            102 27 Apr  2013 /System/Library/Extensions/hp_fax_io.kext

Ich erinnere mich auch, dass der El Capitan-Installer zu dem Zeitpunkt, als ich ein Upgrade von Yosemite durchführte, in vielen Fällen im Grunde alles und seine Oma in die SIP-Quarantäne verschoben hat.

Q2. Zeitpunkt der Durchsetzung

Wenn ich:

  • ein Wiederherstellungs-Volume starten,

  • Fügen Sie dann rootless.conf(auf dem Originalband) eine Zeile hinzu:

    /usr/local/*
    
  • und starten Sie dann das ursprüngliche Volume erneut.

Würde macOS dann beim nächsten Neustart alle Dateien unter /usr/local/mit restrictedFlags löschen?

Wenn nicht, dann bringt mich das zu meiner letzten Frage:

Q3. Tatsächlicher Zweck

Welchem ​​Zweck dient rootless.conf eigentlich ?

Synoli
quelle
2
Ich wünschte, jemand in der Community hätte ein paar Antworten oder sogar Hinweise. Ich habe ähnliche Fragen.
CXJ
2
Sollte die Bearbeitung von rootless.conf (SIP deaktivieren, Datei bearbeiten, SIP wieder aktivieren) nicht ändern, welche Verzeichnisse geschützt sind? Dies scheint nicht wirklich zu passieren ... wird die Datei also überhaupt gelesen?
Wowfunhappy