DAY004 - 上传目录权限错误

举报
yd_287083129 发表于 2026/10/24 01:15:17 2026/10/24
【摘要】 故障场景故障现象:nginx 正常,API 请求返回 500,应用无法写入上传目录服务器状态:server1:状态 INJECTED;开始时间 2026-07-14 21:00:16 +0000;影响范围 练习项目局部不可用,SSH 不受影响。。server2:状态 INJECTED;开始时间 2026-07-15 05:00:25 +0800;影响范围 练习项目局部不可用,SSH 不受影响...

故障场景

故障现象:nginx 正常,API 请求返回 500,应用无法写入上传目录

服务器状态:

server1:状态 INJECTED;开始时间 2026-07-14 21:00:16 +0000;影响范围 练习项目局部不可用,SSH 不受影响。。

server2:状态 INJECTED;开始时间 2026-07-15 05:00:25 +0800;影响范围 练习项目局部不可用,SSH 不受影响。。


排障过程

查看项目结构文档

先看实际返回状态码

nginx正常

500错误,应该先看应用日志什么情况

日志显示“Permission denied”权限拒绝,我们可能要去看看/opt/hermes-drills/day004/data/uploads/.write-test这文件及包含其的目录的可读写权限与项目程序所属用户

根据程序文档描述,先看api相关程序,没有的话再看grep其他程序,看这个正在运行的程序所属的用户是谁

ps -ef | grep api

由monika用户运行

看看api.py的代码逻辑是否是写/opt/hermes-drills/day004/data/uploads/.write-test

grep -R -C 5 ".write-test\|uploads\|data" app

后续补录:最好还是加上-R递归搜索程序目录下的所有相关信息,能看到环境变量等其他地方也出现相关目录

可以不加-R先查我们已经确认运行的api.py

grep -C 5 ".write-test\|uploads\|data" app/api.py

看看这.write-test文件是什么权限

看来这.write-test文件还没创建出来,大概是monika用户没有这个uploads或者上级目录的x可执行权限,所以没办法创建这个文件

ps:创建一个文件时,目标目录(也就是文件所在的目录)需要 w+x 权限;所有上级目录只需要 x 权限即可

应该用更专业的namei -l命令逐级看目录和文件的权限

看得出来,api.py的执行用户monika没有uploads目录的写操作w权限,虽然可以看到目录下面的文件,也可以进入目录,却没有办法改变目录下面的文件,因此无法创建.write-test文件

如果我不是monika用户,可以用sudo -u monika touch /opt/hermes-drills/day004/data/uploads/.write-test模拟monika身份创建文件测试是否报“Permission denied”

现在我是monika用户,直接

一般赋予monika用户或者这个组uploads目录的写权限即可

sudo chmod u+w /opt/hermes-drills/day004/data/uploads

这就创建成功了

测试本地访问API成功

公网也访问成功

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。