• 随笔 0
  • 阅读 0
  • 评论 0

Linux上项目部署在home目录中无法访问的问题

在Linux上开发一个Web项目,使用nginx作为Web服务器。在nginx的配置文件中添加一个serverroot路径写的是放在home目录中的项目目录的路径。打开浏览器访问,提示错误:403 Forbidden。

查看nginx的错误日志/var/log/nginx/error.log,关键信息:

2021/09/03 16:21:00 [error] 18755#18755: *1 "/home/youshilife/project/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: project.test, request: "GET / HTTP/1.1", host: "project.test"

可见,是访问文件/home/youshilife/project/index.html权限不足导致的问题。

经检查,发现问题的根源出在home目录的权限设置上。/home/下每个用户的家目录权限为700,即让每个用户的家目录仅允许被该用户自己访问。nginx运行时使用的用户显然不是youshilife,当然就没有权限访问到里面的文件。

几个可行的解决方案:

  • chmod o+x /home/<用户名>,即允许其他用户访问自己home目录中的文件列表。
    多用户场景下一般不要这么做,因为有安全风险。
  • 将项目目录直接放在其他nginx可访问的目录中(如/srv//var/www/)。
    开发环境中可以将项目目录的所属用户设置为自己,以便修改。

另外,我尝试了将home目录中的项目目录做软链接到其他可访问的目录中(如/srv/),结果发现不行,这是因为软链接相当于一个指针,实际访问时还是按原始路径访问,所以仍然受原始路径的权限设置影响。而对于目录,Linux不允许做硬链接。

posted @ 2021-09-03 22:13  幽室星辰  阅读(1899)  评论(0编辑  收藏  举报