Permission Denied 错误源于操作系统拒绝当前用户向目标路径写入,非Sublime自身缺陷;应先用ls -l和ls -ld检查文件及父目录权限,确认是否缺少写权或执行位,再针对性修复归属或权限,避免滥用sudo或chmod 777。

Permission Denied错误不是 Sublime 的 bug,而是操作系统在拦你——它清楚地告诉你:当前用户没被授权往那个路径写东西。直接右键“以管理员身份运行”能临时绕过,但不该成为日常操作。
Sublime 保存文件报 Permission Denied 怎么快速定位根源
别急着开管理员模式,先确认是哪一层卡住了:
-
ls -l /path/to/file看文件权限位(比如-r--r--r--就没写权) -
ls -ld /path/to/parent/dir看父目录有没有x(执行位),没有就进不去、改不了 - Windows 下右键 → 属性 → 安全选项卡,检查当前用户是否列在“组或用户名”里,且有“修改”权限
- 如果路径含
/etc/、/usr/local/bin/、C:\Windows\或 OneDrive 同步目录,基本就是系统级保护路径
Linux/macOS 下改权限比提权 Sublime 更安全
用 sudo 启动 Sublime 会让整个编辑器、插件、自动保存都跑在 root 权限下,一个误删可能毁掉 /etc/hosts 或 /usr/bin。真正该做的,是让目标文件或目录对当前用户可写:
- 单个文件加写权:
sudo chmod u+w /etc/hosts,改完再sudo chmod u-w /etc/hosts恢复 - 整个项目目录归属自己:
sudo chown -R $USER:$(id -gn $USER) ~/my-project - 避免
chmod 777—— 这等于把家门钥匙挂路灯上,尤其对/etc下的配置文件 - 更干净的做法:把配置文件放在
~/Sites/nginx-conf/,再用符号链接接入:sudo ln -sf ~/Sites/nginx-conf/default.conf /etc/nginx/conf.d/default.conf
Windows 上“以管理员身份运行”不是点一下就完事
右键快捷方式选“以管理员身份运行”确实能弹出 UAC 对话框,但要注意三件事:
- 这只是临时提升,关掉窗口后权限就失效;若想每次双击都生效,得进快捷方式属性 → 快捷方式选项卡 → 高级 → 勾选“以管理员身份运行”
- 千万别对
subl.exe主程序本身设兼容性提权,否则从开始菜单或文件关联打开时也会强制弹 UAC,干扰正常开发流 - UAC 提权后,Sublime 的剪贴板、D-Bus、X11 转发可能异常,表现为复制粘贴失灵、插件无法调用系统通知等,这不是 Sublime 崩溃,是 Windows 安全隔离机制在起作用
Sublime 构建系统运行 .sh 文件报 Permission denied 的真相
这个错误和构建配置关系不大,99% 是脚本文件本身没执行权限。macOS/Linux 下 .sh 文件默认不可执行,bash script.sh 能跑只是因为 shell 在读取内容,不校验权限;而 Sublime 构建系统调用的是 ./script.sh,必须走系统权限检查:
- 先运行:
chmod +x deploy.sh - 确认路径不含空格或中文,否则
$file变量在构建系统中容易解析失败 - 别在 Windows 上硬配 Git Bash 路径指向
C:\Program Files\Git\bin\bash.exe—— 反斜杠转义、空格、环境变量映射全会出问题 - 真要跑 shell 脚本,优先用 WSL,在里面启动 Sublime:
subl ~/projects/myapp,整个链路都在 Linux 权限模型下
真正麻烦的从来不是“怎么让它运行”,而是“为什么这一层权限恰好卡在这里”。系统路径、父目录执行位、UAC 提权粒度、WSL 与 Windows 文件系统的 ACL 映射……这些限制往往叠加出现。改一个权限,可能暴露另一个。与其反复试错,不如先 ls -l 一眼看清谁在拦你。











