macOS 中可用 chflags uchg 命令锁定文件或目录以防止修改、删除等操作,用 ls -lO 查看 uchg 标志确认状态,支持单个、递归及 find 批量锁定,解锁则用 chflags nouchg。

在 macOS 中,用终端命令锁定关键敏感文件是一种快速、可批量操作的方式,适合需要精确控制或自动化管理的场景。它不加密内容,但能防止误编辑、覆盖或删除——这是保护配置文件、日志模板、证书等静态资产的有效手段。
确认文件当前状态
执行前先检查目标文件是否已锁定,避免重复操作或误判:
- 打开终端,输入:ls -lO /路径/到/文件(例如 ls -lO ~/Documents/config.plist)
- 查看输出中是否含 uchg 标志:有则已锁定,无则未锁
- 注意:ls -lO 中的字母 O 是大写“欧”,不是数字 0
使用 chflags 锁定单个文件或文件夹
macOS 通过设置文件系统标志(flag)实现锁定,核心命令是 chflags uchg:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 锁定一个文件:chflags uchg ~/Desktop/secret.key
- 锁定整个文件夹(含其下所有内容):chflags -R uchg ~/Documents/SensitiveData(-R 表示递归)
- 锁定后,该文件无法保存修改、重命名、移动或直接删除;拖入废纸篓时会弹出确认提示
批量锁定多个文件(配合 find 命令)
当需锁定符合特定条件的一批文件(如所有 .env 文件或某目录下全部 .pem 证书),可用 find 配合 chflags:
- 锁定当前用户主目录下所有 .env 文件:find ~ -name "*.env" -exec chflags uchg {} \;
- 锁定 Downloads 中所有以 “backup_” 开头的 .zip 文件:find ~/Downloads -name "backup_*.zip" -exec chflags uchg {} \;
- 执行前建议先用 find … -print 预览匹配结果,确保范围准确
解锁被锁定的文件
锁定不是永久性的,随时可通过对应命令解除:
- 解锁单个文件:chflags nouchg ~/Desktop/secret.key
- 递归解锁整个文件夹:chflags -R nouchg ~/Documents/SensitiveData
- 注意:nouchg 是 uchg 的否定形式,不是 no uchg 或其他拼写










