当我尝试将
/usr/local
中的某些文件夹复制到标准用户的文件夹时,我发现有一个名为“local”的文件夹我无法删除,即使使用
# rm -rf local
rm: local: Operation not permitted
它告诉我“不允许操作”,但我确实有超级用户权限。然后我想可能是flags有问题,flag信息是:
# ls -al
drwxr-xr-x 2 root wheel 68 Oct 10 10:04 local
# ls -lO
drwxr-xr-x 2 root wheel sunlnk 68 Oct 10 10:04 local
看来我也无法改变它的标志。那么
sunlnk
是什么意思以及我可以做什么来删除空文件夹?
MacOS 中由于“系统完整性保护”而存在“sunlnk”标志,因此只有在禁用系统完整性保护后才能删除具有“sunlnk”标志的文件。禁用系统完整性保护的方法是将计算机重新启动到恢复模式,然后进入Utility>Terminal,在其中输入
# csrutil status
# csrutil disable
然后
reboot
您的计算机。当你完成你想要的事情时,记得再次按csrutil enable
打开它。有关更多详细步骤,请参阅 https://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac-and-why-you-shouldnt/
如果您无法访问任何文件或文件夹,或者任何终端命令不适用于特定目录 – 是时候召回 macOS 沙箱和 POSIX 权限了!
检查 SIP 状态,因此将以下命令写入终端:
csrutil status
你会得到这个:
/* System Integrity Protection status: enabled. */
如果状态为
enabled
,则需要禁用SIP。
要在 macOS 上关闭无根/系统完整性保护,请执行以下步骤:
csrutil disable
。要再次启用 SIP,请重复步骤 2-5 并在终端中输入以下命令:
csrutil enable
正如 @dan 所报告的,运行
csrutil enable
命令后,您可能会遇到棘手的问题。请在下面的评论中阅读相关内容。