在 apache 中启用 userdirs(即 ~/public_html)时,设置 public_html 目录的所有权和权限的标准方法是什么?理想情况下,我希望授予 apache 服务器在该目录中执行任何操作的权限,而无需使整个目录对所有人都可写。有没有标准方法可以做到这一点?
如果解决方案涉及设置特定的所有权或权限,如何确保在该目录中创建的任何新文件都会自动获得适当的权限?
答案1
通常在多用户系统上,您只需将目录设置为可执行文件,并使目录中的所有文件保持公开可读。
如果您自己运行服务器,则可以将组设置为与 Apache 组相同的组,并将目录组设置为可写。此外,您还需要 SGID,以便目录中创建的任何内容都继承所有权。
chmod 2771 /path/to/public_html/incoming
答案2
如果有 ACL,则输入以下内容/etc/cron.daily/public_html
将确保 www-data 系统用户对所有 public_html 文件夹具有完全访问权限:
#!/bin/sh
HOME_DIR="/home"
WWW_DIRNAME="public_html"
WWW_USER="www-data"
setfacl -Rm "u:${WWW_USER}:rwX,d:u:${WWW_USER}:rwX" "$HOME_DIR/*/$WWW_DIRNAME"