Apache 文档根目录的最佳权限/所有权

Apache 文档根目录的最佳权限/所有权

我需要一些帮助来设置 Apache 文档根目录的正确权限或所有权。以下是我需要的:

  • 存储在不同的网站/var/www/html/<site>
  • 两个用户应该通过 ssh 更新/管理网站
  • 所有权应该与 Apache 用户不同(出于安全考虑)

我该怎么做?目前所有文件都是全球可写的,这不太好。服务器运行的是 CentOS 5.5

谢谢

答案1

创建新组

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 可以修改其内容。

答案2

我更喜欢使用 -o acl 挂载分区。这样你就可以使用 setfacl 命令为文件和文件夹授予细粒度的权限,而不是仅指定用户-组-其他权限。

因此,将 acl 添加到 /etc/fstab 中的分区行,或使用 mount -o remount,acl /mnt/xy 重新挂载,然后将您的 Web 目录的所有权授予 nobody:nobody。将 Chmod 设置为 770,并使用 setfacl 仅授予需要的文件夹的写入权限,例如,授予 www-data(或您的 Web 服务器以之运行的用户)对上传文件夹的写入权限,并授予您自己的用户对整个目录的写入权限。

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

现在除了你的网络服务器和你自己的用户之外,没有人可以读取你的文件。你可以写入文件夹中的每个文件,而网络服务器只能写入上传文件夹。

相关内容