我正在使用 Centos 5.5
假设我有两个目录:
/var/www/读取
/var/www/写入
如果在 /var/www/read 中创建了一个文件,是否可以将其“重定向”以便它实际上是在 /var/www/write 中创建,而不是在 /var/www/read 中创建?
例如尝试创建 /var/www/read/directory/directory/newfile.txt 实际上最终会创建 /var/www/write/directory/directory/newfile.txt
为什么?
我希望任何 Apache 写入都位于不同于其读取的目录中。我无法直接在 php 代码中执行此操作,因为它已加密。
答案1
一般情况下不会。Apache 只会运行您的 php(或其他)代码。应用程序可以写入运行用户有写入权限的任何目录(如果您使用 mod_php,则此用户与运行 Web 服务器的用户相同)。
答案2
好吧,您可以让 cron 作业定期将新文件从读取目录移动到写入目录。
或者,您可以为 apache 构建一个 chroot 环境,除了将写入目录挂载到读取目录之外,其他一切都相同。您现在可以将写入目录绑定挂载到读取目录,但如果您必须更改许多设置,请直接转到完全 chroot,而不是稍后再进行。
更新:在 apache 上使用 chroot 只有 apache 可见,而执行绑定挂载时只有写入覆盖读取才对整个系统可见。
答案3
听起来你想要/var/www/read
只读。该技术类似于用于 Linux LiveCD 的技术。使用 unionfs 或奥夫斯在文件系统级别转移写入。CentOS 的兄弟版本 Scientific Linux 附带一个kernel-module-aufs
软件包。