我正在尝试设置自己的 Apache,但似乎无法弄清楚权限问题。
假设我从网上某处获取一个文件,其权限为 600。
然后我通过 ftp 将此文件上传到用户目录,该目录也是一个 apache 虚拟站点,因此该文件保留了 600 的权限。这意味着用户可以读取此文件,但 Apache 不能:它将被禁止。
最简单的解决方案是什么,以便 apache 可以读取 + 写入用户目录中的任何文件? 是否可以授予 apache 对目录中文件的某种 root 权限?
答案1
您可以使用 ACL 授予 apache 对整个子树的权限,或者对所有内容(ftp 用户和 apache)使用 ACL :)。我会对所有内容使用 ACL,因为我认为让所有内容朝同一方向工作更简单、更好。
答案2
你可以考虑mod_userdir。
如果用户主目录中有一个名为“public_html”的目录
chgrp apache /home/username/public_html
chmod 750 /home/username/public_html
chmod g+s /home/username/public_html
那么这意味着在该目录中创建的新文件将自动被 apache 组读取。
答案3
简短的回答:chmod 为 660 将允许组 apache 和提到的用户写入文件 - 您可能必须将 ftp 用户添加到 apache 组。
长推荐答案:http://www.csgnetwork.com/csgchmodcalc.html- 如果您的 ftpd 支持,您可以通过 ftp 设置 chmod 权限。
答案4
你可以看看使用“inotifywait”。这可以让你监视目录和文件中的更改。这个网站http://hardc0l2e.wordpress.com/2012/03/13/folder-monitoring-script-using-inotifywait/ 包含一个脚本,它只输出已更改的文件。您可以更新它以执行任何您想要的操作,例如根据您的意愿对文件进行 chmod 操作!