Ssh

我應該與執行網站的同一使用者一起部署嗎?

  • October 28, 2016

我有一個由 Nginx 提供服務的網站,我最近為它設置了 travis 建構和部署。

Nginx 以www-data使用者身份執行網站。我創建了一個使用者deploy,以便 Travis 可以通過 SSH 登錄伺服器並部署網站。已部署的文件以deploy使用者為所有者儲存,這與執行網站的使用者不同 ( www-data)。

我擔心使用此設置執行網站時遇到權限問題。我應該使用相同的使用者www-data/deploy來執行和部署網站嗎?使用這種方法,如果允許執行網站的使用者通過 SSH 遠端登錄,我會遇到問題嗎?

請賜教。

實際上,這些文件不應該歸其所有,www-data因為這意味著 Nginx 可以修改它們,這在大多數情況下不是您想要的(除非它是需要自我更新的 CMS。)

所以所有文件都應該歸deploy.

如果它是 CMS 並且您需要寫入幾個文件夾,那麼那些極少數(一個?)文件夾確實應該歸www-data. 如果部署也是第一次安裝,這可能會導致問題。要麼讓使用者執行手動步驟,要麼讓一個特殊的工具來完成這項工作,但如果它是一次性的,只需手動完成,這將很容易(特別是因為你只有一個這樣的文件夾,對嗎?)CMS 還可以告訴您是否存在此類問題並停止而不是提供頁面。這樣您就可以立即知道,並且可以避免在嘗試上傳文件或進行類似操作時出現問題。

當然,文件不屬於所有,www-data但需要由www-data. 因此,要麼使其他人可讀(-rw-r--r--),要麼考慮將組設置為www-data-rw-r-----)。在大多數情況下,我看到人們甚至沒有冒險使用該組。他們只是讓其他人訪問文件,因為這樣更安全。

當然,這也意味著 Nginx 對deploy使用者和組沒有訪問權限。

引用自:https://unix.stackexchange.com/questions/319587