有什么消息说
像其他所有人一样,我的/System/Library/Sandbox/rootless.conf
文件包含以下条目:
$ cat /System/Library/Sandbox/rootless.conf
[…]
/System
[…]
* /System/Library/Extensions
/System/Library/Extensions/*
[…]
我发现的有关该主题的 所有资料(示例1 2 3)似乎都建议根据的规则rootless.conf
,这些条目将在引导时强制执行,并且可以大致解释如下:
在
/System
层次结构内部,除非有更具体的规则授予此类访问权限,否则不允许任何进程写入任何文件或文件夹。在内部
/System/Library/Extensions
,任何具有root特权的进程都可以创建新文件和子文件夹;但是,没有进程被允许修改或删除任何现有的文件或子文件夹内
/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年5月这样做)就已经存在。
当我在搜寻SIP例外清单时/System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
,也看不到那里列出的第3方扩充功能:
$ 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
标志或com.apple.rootless
属性rootless.conf
?
例如,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
我还记得,当我从优胜美地升级时,El Capitan安装程序在许多情况下选择将基本上所有东西及其祖母移入SIP隔离区。
Q2。执行时间
如果我要:
启动到恢复卷,
然后
rootless.conf
在原始卷上添加一行:/usr/local/*
然后再次重新启动到原始卷,
然后,macOS会在下次重新启动时重新/usr/local/
使用带有restricted
标志的所有文件吗?
如果没有,那么这将使我想到最后一个问题:
Q3。实际目的
rootless.conf
实际目的是什么?