Packages/User权限错乱是配置无法加载、插件失效及保存失败的主因;需用Browse Packages…确认路径,再通过chown/chmod(Linux/macOS)或安全属性设置(Windows)修复属主与读写权限,并注意atomic_save和encoding兼容性。

Sublime Text 的 Packages/User 目录权限错乱,是备份后配置无法加载、插件不生效、甚至保存失败的最常见原因——不是备份没做对,而是恢复时目录属主或权限没同步过来。
如何确认 Packages/User 权限是否正确
别猜路径,先用编辑器自己报给你看:启动 Sublime Text → Preferences → Browse Packages…,弹出的窗口地址就是真实 Packages/User 路径。然后在终端(macOS/Linux)或命令行(Windows)里检查:
- Linux/macOS:
ls -ld ~/.config/sublime-text-3/Packages/User(ST3)或ls -ld ~/.config/sublime-text-4/Packages/User(ST4),输出中第一段应以drwxr-xr-x或类似开头,且第三列必须是你当前用户名 - Windows:
icacls "%APPDATA%\Sublime Text 3\Packages\User",确认你的账户有(OI)(CI)(F)(即“对象继承+容器继承+完全控制”) - 如果返回
Permission denied或显示属主是root/Administrator,说明权限已损坏
备份恢复后必须执行的权限修复命令
从另一台机器拷贝完 Packages/User 和插件目录后,不能直接重启就完事。以下操作必须在退出 Sublime Text 后执行:
- Linux/macOS:
sudo chown -R $USER:$(id -gn $USER) ~/.config/sublime-text-3/Packages/User(ST3)或对应 ST4 路径;再补一句chmod -R u+rw ~/.config/sublime-text-3/Packages/User - Windows:右键
%APPDATA%\Sublime Text 3\Packages\User→ 属性 → 安全 → 编辑 → 选中你的账户 → 勾选“完全控制” → 点击“高级” → 勾选“替换子容器和对象的所有者” → 应用 - 如果整个
Packages目录都被覆盖(比如你连Packages/GitGutter也一并拷了),那得先修复Packages父目录属主,否则子目录改了也白改
atomic_save 和 encoding 在备份场景下的隐性影响
备份恢复后第一次保存 Preferences.sublime-settings 失败?大概率不是权限问题,而是这两个设置被带了过来却与当前系统不兼容:
-
"atomic_save": true是默认值,但若恢复后的Packages/User所在磁盘是 OneDrive/Google Drive 同步盘,rename操作常被拦截,导致静默失败 —— 临时改成false可验证 -
"default_encoding": "Western (Windows 1252)"这类非 UTF-8 设置,可能让新环境读取配置时解析出错,控制台无报错但设置不生效 —— 建议统一设为"UTF-8" - 检查方式:打开控制台(
Ctrl+`),输入view.encoding(),返回非UTF-8就要修正
便携版用户特别注意 Data 文件夹的权限边界
如果你用的是便携版(即启动时没装进系统目录,而是解压即用),所有数据都在程序同级的 Data 文件夹里。这时候权限修复目标不是 %APPDATA%,而是那个 Data 目录本身:
- 确保
Data文件夹所在分区支持 Unix 权限(如 macOS/Linux 下挂载的 NTFS 分区可能不支持chown) - Windows 上若把便携版放在 OneDrive 或 C:\Program Files\ 下,即使
Data属主是你,父目录的“只读”或“受保护”属性仍会传导下来 - 最稳做法:把便携版整个挪到
~/Documents/SublimeTextPortable(macOS/Linux)或%USERPROFILE%\Documents\SublimeTextPortable(Windows),再修复Data权限
权限修复不是一次性的活——只要你在不同用户、不同系统间迁移过 Packages/User,就必须重新校验属主和 u+rw 权限。尤其注意 macOS 上 staff 组和 Linux 上 users 组的差异,以及 Windows 中“完全控制”是否真正继承到了子对象。










