为什么在 macOS Catalina 及更新版本上,root 无法写入 `/System/Volumes/Data/Library/Preferences/OpenDirectory/`

为什么在 macOS Catalina 及更新版本上,root 无法写入 `/System/Volumes/Data/Library/Preferences/OpenDirectory/`

我试图理解为什么在 macOS 上(从 Catalina 到 Ventura),用户root(即我之后sudo bash)会

# mkdir /System/Volumes/Data/Library/Preferences/OpenDirectory/foo
mkdir: /System/Volumes/Data/Library/Preferences/OpenDirectory/foo: Operation not permitted

然而

# mkdir /System/Volumes/Data/Library/Preferences/Logging/foo

在具有明显相同文件权限和位置的兄弟目录中工作正常。

注意:

  • 给出的错误是Operation not permitted并且不是Read-only file systemPermission denied,所以这似乎与访问控制权限或根文件系统的只读挂载无关。

  • /System/Volumes/Data/是可写的卷。

  • 这两个文件夹看起来非常相似ls -ldOexattr分别有stat -r

    # cd /System/Volumes/Data/Library/Preferences/
    # ls -ldOe Logging OpenDirectory
    drwxr-xr-x  4 root  wheel  - 128 22 Aug 17:54 Logging
    drwxr-xr-x  5 root  wheel  - 160 17 Aug 16:13 OpenDirectory
  • /usr/share/firmlinks文件夹均未在或中列出/System/Library/Sandbox/rootless.conf

手术mkdir禁用后工作系统完整性保护,因此这显然发挥了作用,但是如何发挥作用呢?

如何查看哪个文件夹受到启用 SIP 的影响?

诸如此类的系统工具怎么还能sudo dsconfigldap -a ldap-server.example.com在那里写呢?

PS:我原本想解决的实际问题与

但是现在我也只是想了解 macOS 实际上是如何阻止 root 的写访问的,因为我看不到任何我熟悉的访问控制机制在这里发挥作用:文件权限、扩展 ACL、只读挂载、SIP、文件锁定、firmlink 等。这两个文件夹有什么不同?

相关内容