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

时间:2021-09-03
本文章向大家介绍Linux上项目部署在home目录中无法访问的问题,主要包括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不允许做硬链接。

原文地址:https://www.cnblogs.com/youshilife/p/15224130.html