我應該使用運行該網站的同一用戶進行部署嗎?

我應該使用運行該網站的同一用戶進行部署嗎?

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

Nginx 以使用者身分經營網站www-data。我創建了一個用戶deploy,以便 Travis 可以透過 SSH 登入伺服器並部署網站。部署的文件以使用者為所有者進行存儲deploy,該使用者不同於運行網站的使用者 ( www-data)。

我擔心使用此設定運行網站會出現權限問題。我應該使用相同的使用者www-data/deploy來運行和部署網站嗎?使用這種方法,允許運行網站的使用者透過 SSH 遠端登入會遇到問題嗎?

請賜教我這一點。

答案1

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

所以所有文件都應該屬於deploy.

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

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

deploy當然,這也意味著Nginx對該使用者和群組沒有存取權限。

相關內容