在 /var/www 中處理 Apache 2 的使用者 www-data 權限的最佳方法是什麼?
有沒有人有一個很好的解決方案來處理文件
/var/www
?我們正在執行基於名稱的虛擬主機,Apache 2 使用者是www-data。我們有兩個普通使用者和 root。因此,當弄亂 中的文件時
/var/www
,而不必…chown -R www-data:www-data
…一直以來,有什麼好的方法來處理這個?
補充問題:那麼您在權限上的核心程度如何?
這一直是協作開發環境中的一個問題。
嘗試擴展@Zoredache 的答案,因為我自己嘗試了一下:
- 創建一個新組 (www-pub) 並將使用者添加到該組
groupadd www-pub
usermod -a -G www-pub usera
## 必須使用 -a 附加到現有組
usermod -a -G www-pub userb
groups usera
## 顯示使用者組
- 將 /var/www 下所有內容的所有權更改為 root:www-pub
chown -R root:www-pub /var/www
## -R 用於遞歸
- 將所有文件夾的權限更改為2775
chmod 2775 /var/www
## 2=set group id, 7=rwx for owner (root), 7=rwx for group (www-pub), 5=rx for world (包括apache www-data user)設置組 ID ( SETGID ) 位 (2) 會導致組 (www-pub) 被複製到該文件夾中創建的所有新文件/文件夾。其他選項是 SETUID (4) 來複製使用者 ID,以及 STICKY (1) 我認為只允許所有者刪除文件。
有一個
-R
遞歸選項,但不會區分文件和文件夾,因此您必須使用 find,如下所示:
find /var/www -type d -exec chmod 2775 {} +
- 將所有文件更改為 0664
find /var/www -type f -exec chmod 0664 {} +
- 將使用者的 umask 更改為 0002
umask 控制預設的文件創建權限,0002 意味著文件將有 664 和目錄 775。設置這個(在我的例子中通過編輯
umask
底部的行/etc/profile
)意味著一個使用者創建的文件將可以由 www-中的其他使用者寫入組而不需要chmod
他們。通過創建文件和目錄並驗證所有者、組和權限來測試所有這些
ls -l
。注意:您需要註銷/登錄才能使您的群組更改生效!