【MacOS之SIP】SIP标识符restricted 和 取消SIP保护

前言

我尝试操作/bin目录下的文件,比如执行chmod 777 ./shmkdir test-dir,会发现报错Operation not permitted

在这里插入图片描述
在这里插入图片描述

这是由SIP(系统完整性保护)引起的

https://support.apple.com/en-us/HT204899
在这里插入图片描述

在受SIP保护的目录中,我们无法进行创建文件、修改文件等操作

restricted

如果你使用ls -lO查看/usr/local,你会发现下面的大部分文件都被打上了restricted标志

wushu@wushudeMacBook-Pro /bin % ls -lO        
total 9400
-rwxr-xr-x  1 root  wheel  restricted,compressed  121120 Jan  1  2020 [
-r-xr-xr-x  1 root  wheel  restricted,compressed 1296704 Jan  1  2020 bash
-rwxr-xr-x  1 root  wheel  restricted,compressed  121984 Jan  1  2020 cat
-rwxr-xr-x  1 root  wheel  restricted,compressed  107552 Jan  1  2020 chmod
-rwxr-xr-x  1 root  wheel  restricted,compressed  123264 Jan  1  2020 cp
-rwxr-xr-x  1 root  wheel  restricted,compressed 1106144 Jan  1  2020 csh
-rwxr-xr-x  1 root  wheel  restricted,compressed  277440 Jan  1  2020 dash
-rwxr-xr-x  1 root  wheel  restricted,compressed  139312 Jan  1  2020 date

这就是SIP的标识符,它的用途就是告诉macOS的SIP,这个文件受到系统保护,不能更改。

取消SIP保护

我们可以先执行csrutil status查看SIP保护是否处于开启状态

首先,重启电脑,按Command+R进入恢复模式,打开恢复模式下的终端

接下来有两种命令取消SIP保护。

最常用的 csrutil disable

执行csrutil disable即可
但这可能使系统陷入风险

最安全的

来自于:https://segmentfault.com/a/1190000037429342

cd到目标目录,如cd /Volumes/你的硬盘名/bin
然后执行chflags -R norestricted,便可以把当前目录以及他们子目录下的所有文件解除保护(链接除外,需手动处理)