Чому мій `rootless.conf` не завжди впливає на вибір SIP про те, які файли отримують" обмежений "прапорець?


8

Які джерела кажуть

Як і всі інші, моя /System/Library/Sandbox/rootless.conf файл містить такі записи:

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

Все джерел на тему, яку я знайшла (приклад 1 2 3 ) здається, припускають, що відповідно до правил rootless.conf, ці записи будуть виконуватися під час завантаження, і їх можна грубо інтерпретувати наступним чином:

  1. Всередині /System ієрархії , жоден процес не може записувати в будь-який файл або папку, за винятком випадків, коли більш конкретне правило надає такий доступ;

  2. всередині /System/Library/Extensionsбудь-який процес, який має права root, може створювати нові файли і підпапки;

  3. однак жоден процес не може змінювати або видаляти будь-який існуючі файли або вкладені папки всередині /System/Library/Extensions.

Що я дійсно спостерігаю

Однак, коли я дивився на фактичний зміст /System/Library/Extensions, Я здивувався, на моє здивування, декілька файлів і папок, які, незважаючи на активність SIP, чудово записуються і видаляються:

$ 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

Зверніть увагу на це hp_Inkjet9_io_enabler.kext і hp_fax_io.kext є розширеннями ядра третьої сторони, які вже були присутні в той час, коли я оновлював El Capitan (що я зробив у травні 2016 року).

Коли я шукаю список SIP винятків у /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths, Я не бачу зазначених розширень третіх сторін у списку:

$ 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

Я знайшов більше десятка розширень ядра, які також не вистачає restricted прапор і com.apple.rootless атрибут; всі пошкоджені розширення ядра є розширеннями третьої сторони, які я встановив протягом останнього десятиліття, і, очевидно, пережив оновлення El Capitan.

Які запитання про наступні проблеми:

Що б я хотів знати

Q1. Відсутні прапори

Як вийшло, що немає розширення ядра третьої сторони - і насправді жодного файлу, який я створюю вручну /System/Library/Extensions - коли-небудь отримує restricted прапор або a com.apple.rootless атрибут, навіть якщо rootless.conf правило, здається, мандат навпаки?

Наприклад, a ls -dlO вздовж ланцюга шляху hp_fax_io.kext розкриває:

$ 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

Я також пам'ятаю, що в той час, коли я перейшов з Yosemite, інсталятор El Capitan вирішив перенести в основному все і свою бабусю в карантин SIP у багатьох випадках.

Q2. Час виконання

Якщо б я:

  • завантажиться в обсяг відновлення,

  • потім додайте rootless.conf (на початковому обсязі) рядок:

    /usr/local/*
    
  • а потім перезавантажте знову в початковий том,

MacOS потім змиває всі файли під /usr/local/ с restricted прапори на наступному перезавантаженні?

Якщо ні, то це підводить мене до мого останнього питання:

Q3. Фактична мета

Яка мета робить rootless.conf насправді служити?


1
Звичайно, побажати, щоб хтось у громаді мав кілька відповідей або навіть натяки. У мене є подібні питання.
CXJ

1
У відповідності з цим, не слід редагувати rootless.conf (вимкнути SIP, редагувати файл, повторно включити SIP), які каталоги захищені? Це не здається насправді відбувається ... так що файл отримувати читати взагалі?
Wowfunhappy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.