Amazon Lightsail无法打开读取文件 正确读写权限属主配置问询
Amazon Lightsail Bitnami Nginx 环境文件读写权限正确配置
Bitnami 预置的Lightsail Nginx镜像有固定的服务运行身份,777权限属于高危全开放配置,不仅存在极大安全隐患,也无法解决上层目录权限缺失导致的访问失败问题,正确配置规则如下:
- 核心身份确认:Bitnami Nginx 服务的worker进程运行身份为
daemon用户、daemon用户组,所有需要被Nginx读取、写入的资源都要围绕这个身份配置,不要套用原生Nginx的www-data/nginx用户规则,二者不通用。 - 属主属组配置:
如果你需要通过默认的bitnami登录用户管理、编辑目标JSON文件,直接将文件及其所有上层父目录的属主属组设置为bitnami:daemon即可。你之前设置的文件本身属主是正确的,读取失败基本都是因为文件所在路径的某一级父目录没有给daemon用户开放遍历权限。 - 权限值配置(禁止使用777):
- 目标JSON这类普通文件设置权限为
664即可:属主bitnami拥有读写权限,属组daemon拥有读写权限,其余用户仅可读,完全满足后续写入需求,无多余权限风险。 - 存放该文件的目录设置权限为
775即可:目录的执行权限代表可进入遍历,该配置下属主bitnami、属组daemon都拥有目录的读写、遍历权限,其余用户可遍历查看、不可修改。
一键配置命令参考(替换为你实际的文件路径即可):
# 替换为你的JSON文件实际绝对路径 TARGET_FILE="/opt/bitnami/nginx/html/your_project/data/config.json" TARGET_DIR=$(dirname $TARGET_FILE) # 递归设置目录及内部文件的属主属组 sudo chown -R bitnami:daemon $TARGET_DIR # 递归设置目录权限为775 sudo find $TARGET_DIR -type d -exec chmod 775 {} \; # 递归设置普通文件权限为664 sudo find $TARGET_DIR -type f -exec chmod 664 {} \; - 目标JSON这类普通文件设置权限为
- 常见异常排查:
- 不要将需要web访问的文件存放在
/root、/home/bitnami这类用户私有目录下,这类目录默认权限为700,仅目录所属用户可进入,哪怕文件本身权限配置正确,daemon用户也无法穿过父目录访问到文件,建议统一存放到Nginx站点根目录/opt/bitnami/nginx/html/下的自定义目录中。 - 配置完权限仍无法访问时,优先检查Nginx站点配置中的root路径是否正确、对应location块是否配置了拒绝访问规则,不要第一时间加777权限排查。
- 不要将需要web访问的文件存放在
安全提示:777权限允许服务器上任意进程、任意用户对文件进行修改、删除、替换操作,一旦存在入侵风险,攻击者可直接篡改该JSON文件植入恶意内容,生产环境必须禁用该权限配置。
内容的提问来源于stack exchange,提问作者elkefreed
相关产品推荐
相关产品推荐

