症状
以写模式打开文件抛出 PermissionError: [Errno 13] Permission denied,而手动测试同一路径却可用。这种差异是关键线索:你的 shell 与应用可能以不同用户运行,或路径位于只读挂载上。目录需要可执行权限才能穿越,因此父目录缺少 x 位也会阻止访问,即便文件本身看似正常。
诊断
用 id 确认进程用户,用 ls -ld 检查文件与父目录权限;以服务用户执行 test -w 复现;检查挂载选项与容器只读根文件系统。
id && ls -ld /path/to/file /path/to
根因
进程的有效用户无法对路径执行请求的操作,原因是权限、属主、挂载选项或用户身份与交互式 shell 不同。
修复
为服务账户在文件及其各父目录上授予所需权限,修正属主不匹配,并把运行时写入指向专用目录。挂载只读时,应显式将写入重定向到可写位置而非与权限对抗。
验证
重跑写入确认成功,再检查生成文件的属主与模式是否符合预期。以服务用户执行一次可写测试是最可靠的确认方式。
常见陷阱
用 root 运行应用来绕过权限会放大安全风险;应针对最小必要权限进行修正。