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不允許做硬鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM