我有一个大型数据存储库,为了安全起见,我希望将其保持在运行 Ubuntu 14.04 的 VM 的只读状态。
该虚拟机运行一个 Apache 服务器,我希望将只读挂载资源中的某些文件符号链接到的(子目录)中public_html
。
当尝试通过浏览器访问这些子目录时,它们是空的。检查 Apache error.log,我看到以下错误:
AH00032: Symbolic link not allowed or link target not accessible
根据以下答案:
显然,我需要chmod +x
文件和目录才能让 Apache 访问它们。但是,这显然无法对只读文件系统执行。
我认为无法通过 解决此问题FollowSymLinks
,因为导致此问题的是文件系统的基本访问。尽管如此,我还是配置了 Apache 以跟踪符号链接,并验证它在指向读写文件系统上的其他文件时是否有效。
(非常) 不优雅的解决方案是将文件从只读挂载临时复制到某个本地临时空间并将符号链接到那里,但文件很大,需要额外的管理来防止该区域膨胀,并且我需要通过请求服务器在合适的时间范围内提供这些文件。
关于如何访问只读驱动器上托管的符号链接文件,有人还有其他建议吗?
非常感谢,
大卫
答案1
临时将文件系统挂载为 RW,修复权限并再次将其挂载为 RO。
答案2
在某种程度上,感谢 Iain 的回答,我找到了解决方案。
事实上,问题似乎是由 fstab 中的挂载选项引起的。我将其从:
data_raid /data_raid/ vboxsf defaults 0 0
到
data_raid /data_raid/ vboxsf defaults,gid=1000,uid=1000 0 0
其中gid=1000
对应于我的用户名。
资源 (rw) 挂载的主机已经是chmod+x
。但是,由于它以 root 挂载,我认为这导致了上述访问问题。
在新的挂载选项下重新启动(其中组和用户现在是我登录的用户)允许在 Apache 下访问符号链接文件。