为什么我的`rootless.conf`并不总是会影响SIP对哪些文件进行'restricted'标志处理的选择?


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年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 实际目的什么?


2
当然希望社区中的某人有一些答案,甚至暗示。我也有类似的问题。
CXJ

2
与此相应,是否应该编辑rootless.conf(禁用SIP,编辑文件,重新启用SIP)来更改受保护的目录?这似乎实际上没有发生……所以文件是否已全部读取?
Wowfunhappy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.