Kaynaklar ne diyor
Diğer herkes gibi, dosyam /System/Library/Sandbox/rootless.conf
aşağıdaki girişleri içerir:
$ cat /System/Library/Sandbox/rootless.conf
[…]
/System
[…]
* /System/Library/Extensions
/System/Library/Extensions/*
[…]
Konuyla ilgili bulduğum tüm kaynaklar (örnek 1 2 3 ), kurallarına göre rootless.conf
, bu girişlerin önyükleme zamanında uygulanacağını ve kabaca aşağıdaki gibi yorumlanabileceğini önermektedir:
/System
Hiyerarşinin içinde, daha özel bir kuralın bu erişim izni verdiği durumlar dışında hiçbir dosyaya veya klasöre hiçbir işlem yazmasına izin verilmez;içeride
/System/Library/Extensions
, kök ayrıcalıklarına sahip herhangi bir işlemin yeni dosyalar ve alt klasörler oluşturmasına izin verilir;ancak, içinde varolan dosyaları veya alt klasörleri değiştirmeye veya silmeye izin verilmez
/System/Library/Extensions
.
Aslında gözlemlediğim şey
Ancak, asıl içeriğine baktığımda, /System/Library/Extensions
SIP'in aktif olmasına rağmen mükemmel yazılabilir ve silinebilir olan birkaç dosya ve klasörü şaşırdım:
$ 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
El Capitan'a güncellediğimde (Mayıs 2016'da yaptığım) zaten mevcut olan üçüncü taraf çekirdek uzantıları olduğunu hp_Inkjet9_io_enabler.kext
ve unutmayın hp_fax_io.kext
.
SIP istisnaları listesinde arama yaptığımda /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
, bu üçüncü taraf uzantılarını da burada görmüyorum:
$ 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
Bayrak ve com.apple.rootless
öznitelikten yoksun bir düzineden fazla çekirdek uzantısı buldum ; etkilenen tüm çekirdek uzantıları, son on yıl boyunca yüklediğim 3. taraf uzantıları gibi görünüyor ve görünüşe göre El Capitan güncellemesinden sağ çıktı.
Bu da beni aşağıdaki bilmeceler hakkında merak ediyor:
Bilmek istediğim şey
S1. Eksik bayraklar
Kuralın tam tersini zorunlu kılıyor gibi görünse de , hiçbir üçüncü taraf çekirdek uzantısının - ve aslında içinde elle oluşturduğum hiçbir dosyanın /System/Library/Extensions
- bir restricted
bayrak veya com.apple.rootless
öznitelik rootless.conf
almamasına ne dersiniz?
Örneğin, a ls -dlO
yolu zinciri boyunca hp_fax_io.kext
ortaya çıkar:
$ 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
Ayrıca, Yosemite'den yükseltme yaptığım zaman, El Capitan yükleyicisinin temelde her şeyi ve büyükannelerini birçok durumda SIP karantinasına taşımayı seçtiğini hatırlıyorum.
S2. Uygulama zamanı
Eğer olsaydım:
bir kurtarma birimine önyükleme yapabilir,
ardından
rootless.conf
(orijinal birimde) bir satır ekleyin :/usr/local/*
ve sonra tekrar orijinal birime yeniden başlatın,
Would MacOS sonra altındaki tüm dosyaları söndürmek /usr/local/
ile restricted
sonraki yeniden başlatmada bayrakları?
Değilse, o zaman bu beni son soruma getiriyor:
Q3. Gerçek amaç
rootless.conf
Aslında hangi amaca hizmet eder?