Mengapa `rootless.conf` saya tidak selalu memengaruhi pilihan SIP untuk file mana yang mendapatkan perawatan flag` dibatasi`?

8

Apa kata sumber

Seperti milik orang lain, /System/Library/Sandbox/rootless.conffile saya berisi entri berikut:

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

Semua sumber pada subjek yang saya temukan (contoh 1 2 3 ) tampaknya menyarankan bahwa menurut aturan rootless.conf, entri tersebut akan diberlakukan pada saat boot, dan dapat diartikan secara kasar sebagai berikut:

  1. Di dalam /Systemhierarki , tidak ada proses yang diizinkan untuk menulis ke file atau folder apa pun, kecuali ketika aturan yang lebih spesifik memberikan akses tersebut;

  2. di dalam/System/Library/Extensions , proses apa pun yang memiliki hak akses root diizinkan untuk membuat file dan subfolder baru;

  3. Namun, tidak ada proses yang diizinkan untuk mengubah atau menghapus file atau subfolder yang ada di dalamnya /System/Library/Extensions.

Apa yang sebenarnya saya amati

Namun, ketika saya melihat isi sebenarnya /System/Library/Extensions, saya menemukan mengejutkan beberapa file dan folder yang, meskipun SIP sedang aktif, dapat ditulis dan dihapus dengan sempurna:

$ 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

Perhatikan bahwa hp_Inkjet9_io_enabler.kextdan hp_fax_io.kextmerupakan ekstensi kernel pihak ketiga yang sudah ada pada saat saya memperbarui ke El Capitan (yang saya lakukan pada Mei 2016).

Ketika saya mencari daftar pengecualian SIP di /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths, saya tidak melihat ekstensi pihak ke-3 itu tercantum di sana:

$ 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

Saya menemukan lebih dari selusin ekstensi kernel yang juga tidak memiliki restrictedflag dan com.apple.rootlessatribut; semua ekstensi kernel yang terpengaruh tampaknya merupakan ekstensi pihak ke-3 yang saya instal selama dekade terakhir, dan tampaknya telah selamat dari pembaruan untuk El Capitan.

Yang membuat saya bertanya-tanya tentang teka-teki berikut:

Apa yang ingin saya ketahui

Q1. Bendera tidak ada

Kenapa tidak ada ekstensi kernel pihak ke-3 - dan sebenarnya tidak ada file yang saya buat secara manual di dalamnya /System/Library/Extensions- yang pernah menerima restrictedflag atau com.apple.rootlessatribut, meskipun rootless.confaturan tampaknya mengamanatkan sebaliknya?

Misalnya, ls -dlOsepanjang rantai jalur hp_fax_io.kextmengungkapkan:

$ 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

Saya juga ingat bahwa pada saat saya upgrade dari Yosemite, installer El Capitan pada dasarnya memilih untuk memindahkan semuanya dan nenek mereka ke karantina SIP dalam banyak hal.

Q2. Waktu penegakan

Jika saya harus:

  • boot ke volume pemulihan,

  • kemudian tambahkan ke rootless.conf(pada volume asli) sebuah baris:

    /usr/local/*
    
  • dan kemudian reboot lagi ke volume asli,

akankah macOS kemudian memadamkan semua file di bawah /usr/local/dengan restrictedbendera pada reboot berikutnya?

Jika tidak, maka ini membawa saya ke pertanyaan terakhir saya:

Q3. Tujuan yang sebenarnya

Apa tujuan rootless.conf sebenarnya melayani?

Synoli
sumber
2
Tentu berharap seseorang di komunitas memiliki beberapa jawaban atau bahkan petunjuk. Saya punya pertanyaan serupa.
CXJ
2
Sejalan dengan ini, tidak boleh mengedit rootless.conf (menonaktifkan SIP, mengedit file, mengaktifkan kembali SIP) mengubah direktori mana yang dilindungi? Tampaknya ini tidak benar-benar terjadi ... jadi apakah file tersebut dapat dibaca sama sekali?
Wowfunhappy