在 macOS(Apple Silicon)根目录下创建目录的正确方式

25-10-29 17:30 32 0 技术

在 macOS 上,我想在根目录(/)下创建一个目录,比如 /data1,用于放置项目数据。

mkdir /data1

结果系统提示:

mkdir: /data1: Read-only file system

一开始我以为是权限问题,于是又试了:

sudo mkdir /data1

但依然报错,说明即使 sudo 也不行。

为什么会这样?

从 macOS Big Sur(11) 开始,苹果对系统盘启用了 Signed System Volume(SSV)签名保护机制。

这意味着:

系统卷 / 是 只读的 APFS 快照;

即使是 root 用户,也不能直接修改;

mount -uw / 在 Apple Silicon(M1/M2/M3)上会报错:

mount_apfs: volume could not be mounted: Permission denied
mount: / failed with 66

简单来说:根目录是锁死的。

发现关键:synthetic.conf

在查资料的过程中,我找到了苹果文档中提到的机制:

/etc/synthetic.conf – macOS Big Sur 引入的配置文件,用于在根目录创建“虚拟目录”或符号链接。

这就是系统官方预留的“安全白名单”, 允许我们在 / 下扩展目录结构,而不会破坏系统签名卷。

实战步骤

  1. 编辑配置文件

    sudo vim /etc/synthetic.conf
    
  2. 添加内容(每行一个条目,字段间用 Tab 键)

    data0	/Users/cuiliang/data0
    data1	/Users/cuiliang/data1
    

    ⚠️ 注意:是 Tab,不是空格! macOS 对这个非常严格,如果用空格分隔会被忽略。

  3. 创建实际目录

    mkdir -p ~/data0 ~/data1
    
  4. 重启系统(必须)

    sudo reboot
    
  5. 验证结果

重启后执行:

ls -ld /data*

输出:

lrwxr-xr-x   1 root  wheel    21 10月 29 17:22 /data0 -> /Users/cuiliang/data0
lrwxr-xr-x   1 root  wheel    21 10月 29 17:22 /data1 -> /Users/cuiliang/data1

此时 /data0/data1 都能直接访问:

cd /data1
pwd
# /data1
请登录后发表评论 点击登录

文章归档

文章日历

2025 年 11 月
25 26 27 28 29 30 01
02 03 04 05 06 07 08
09 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
01 02 03 04 05 06 07

文章标签

最新评论

友情链接