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文件夹下文件的主要内容,如果未能解决你的问题,请参考以下文章