Apache-2.2

apache 文件根目錄的最佳權限/所有權

  • July 6, 2013

我需要一些幫助來設置 apache 文件根目錄的正確權限或所有權。這是我需要的:

  • 不同的網站儲存在/var/www/html/<site>
  • 兩個使用者應該通過 ssh 更新/管理網站
  • 所有權應該不同於 apache 使用者(出於安全考慮)

我怎樣才能做到這一點?目前所有文件都是世界可寫的,這不好。伺服器執行 CentOS 5.5

謝謝

創建一個新組

groupadd webadmin

將您的使用者添加到組中

usermod -a -G webadmin user1
usermod -a -G webadmin user2

更改站點目錄的所有權

chown root:webadmin /var/www/html/

更改站點目錄的權限

chmod 2775 /var/www/html/ -R

現在任何人都可以讀取文件(包括 apache 使用者),但只有 root 和 webadmin 可以修改它們的內容。

我更喜歡使用 -o acl 掛載分區。這允許您使用 setfacl 命令對文件和文件夾設置細粒度權限,而不是僅指定 user-group-other 權限。

因此,將 acl 放入 /etc/fstab 中的分區行,或使用 mount -o remount,acl /mnt/xy 重新掛載,然後將 Web 目錄的所有權授予nobody:nobody。chmod 到 770,並使用 setfacl 僅對需要它的文件夾授予寫入權限,例如。授予 www-data(或您的網路伺服器執行的使用者)對上傳文件夾的寫入權限,並授予您自己的使用者對整個目錄的寫入權限。

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

現在,除了您的網路伺服器和您自己的使用者之外,沒有人可以讀取您的文件。您可以寫入文件夾中的每個文件,而網路伺服器只能寫入上傳文件夾。

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