Deployment

/var/www 權限管理

  • February 11, 2011

我有一個有多個使用者的伺服器,並希望允許其中一些使用者在其上儲存網頁。因此,我為它們創建了 /var/www 的子目錄並相應地配置了我的網路伺服器。

但是,我不希望他們能夠查看 /var/www 中子目錄的任何內容,而不是他們自己的內容。我怎樣才能做到這一點?如果我將頂層目錄的權限設置為 user:www-data 並將訪問權限設置為 760,我認為這是可能的。但是如何確保在其目錄中創建的每個文件或目錄都使用相同的 user:group 屬性?

另外,我希望能夠使用 git 來部署網頁內容。我不想知道如何做到這一點的任何技術細節,而是我應該如何再次組織權利。我使用 gitolite,每個儲存庫都儲存在 /var/lib/gitolite/repositories 下(文件的所有者是 git 使用者)。在使用正確的使用者:組資訊時,允許 git 使用者寫入網頁目錄之一的最佳方法是什麼?這可能嗎?您如何管理您的 /var/www 訪問權限?供應商是如何做到的?

首先,請注意,您的 760 將拒絕 www-data 組“進入”該目錄的權限,因此它將無法從中提供文件。

目錄上的 +s 位強制使用與目錄本身相同的 uid/gid 創建文件和子目錄(子目錄也將是 +s),因此,如果您

chown user:www-data /var/www/userdir
chmod 6770 /var/www/userdir

此後在該文件夾中創建的任何文件和文件夾都將是 user:www-data。請注意,您只想在目錄上設置它,它不會“修復”已經存在的文件和目錄。

如果您不需要網路伺服器的目錄列表或內容協商功能,您可以省略文件夾上的組 r 位(6730)。這將使編寫一個由網路伺服器執行並窺視另一個使用者目錄的腳本變得有點困難(他們必須知道他們想要讀取的文件的名稱)。您還可以通過使用某種形式的 suexec 來緩解這種情況,以確保使用者目錄中的腳本不在 www-data 組中執行。

引用自:https://serverfault.com/questions/234439