macOS关闭SIP后,仍无法修改/usr文件夹下文件

Posted Locutus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了macOS关闭SIP后,仍无法修改/usr文件夹下文件相关的知识,希望对你有一定的参考价值。

发现问题

MacOS 升级到Big Sur后,删除多余的python3文件,发现写不到磁盘,会报OSError: [Errno 30] Read-only file system的错误。经过了解,在Mac OS10.11 之后,苹果公司为了提高系统环境安全,引入了一个内核保护措施 SIP(System Integrity Protection,系统完整性保护),又称Rootless mode 机制。在 SIP 机制下,系统默认会锁定 /system、/sbin、/usr 这三个目录,即使切换到 root 用户也只能查看,不能进行其他操作。SIP 可以有效地防止恶意程序对电脑进行破坏,所以平时建议保持开启状态。


解决方案

解决思路是将系统重新挂载到一个有读写权限的新目录下,在该目录下操作。既然是SIP导致的,那我们就从SIP开始。

  • 查看 SIP 状态
# csrutil status

# csrutil authenticated-root status
  • 长按开机键,进入Recovery模式,从terminal中将系统保护SIP关掉
# csrutil authenticated-root disable

# csrutil disable
  • 重启进入系统,可以在终端查看是否已将SIP关掉
# csrutil status

# csrutil authenticated-root status

都显示Disable即可。

  • 将系统盘挂载到本地新建目录

通过sudo mount -o nobrowse -t apfs /dev/diskNsM /xxx/xx ,重新将系统盘挂载到本地。/xxx/xx可以是任意地方新建的目录(例如/Users/jackyue/aaa)。diskNsM 为系统盘的设备名,这个在"磁盘工具-设备" 里可以看到(例如:disk1s5s1,注意要把后面的s1去掉,因为磁盘工具里面里显示的是系统盘的快照,挂载成这个snapshot是没用的)。

# sudo mount -o nobrowse -t apfs /dev/disk1s5 /Users/jackyue/aaa

这样系统盘就重新挂载到了用户主目录aaa文件夹下面,从这个文件夹进去就是系统根目录了,而且此文件夹是可读可写的。

# cd /Users/jackyue/aaa

# rm -rf python3

我们把要修改的系统配置文件夹/文件,在相应的系统目录复制/删除即可。

  • 重建系统snapshot
# sudo bless --folder /Users/jackyue/aaa/System/Library/CoreServices --bootefi --create-snapshot

重启系统,会发现挂载的磁盘消失,而修改的设置已经写入到原先不能更改的系统文件中了。

以上是关于macOS关闭SIP后,仍无法修改/usr文件夹下文件的主要内容,如果未能解决你的问题,请参考以下文章

macOS入门教学SIP系统完整性保护怎么禁用?关闭它的方法。

在 MacOS 系统下创建 /home 目录的方法

在 MacOS 系统下创建 /home 目录的方法

在 MacOS 系统下创建 /home 目录的方法

在 MacOS 系统下创建 /home 目录的方法

一键修改 macOS 图标主题