我在 CentOS 6.5 上运行 Apache 2.2,在访问已挂载的 Samba 共享时遇到了问题。
我的网络根目录是/var/www/html
,并且我在根目录中创建了一个名为的文件夹intranet
,并且我使用 fstab 中的以下行将共享挂载到该文件夹:
\\remote.server\share\intranet /var/www/html/intranet cifs rw,auto,guest,uid=apache,gid=apache 0 0
我可以以 root 身份访问此共享并对其进行读取/写入。我还可以sudo -u apache
读取和写入共享。就我在系统级别上所见,共享已完全按照预期安装。
但是,当我尝试通过以下方式访问共享时,http:\\myserver\intranet
收到以下消息:
You don't have permission to access /intranet/ on this server.
但是,当我 时umount intranet
,我能够成功访问带有 的普通文件夹intranet
,http:\\myserver\intranet
这说明我的httpd.conf
和.htaccess
配置正确。
据我所知,问题在于,在某个地方,某些权限没有正确转换。我不确定我还能做些什么来解决这个问题。
编辑:我意识到我什么都没说,但我的 httpd.conf 和 .htaccess 文件也配置为FollowSymLinks
。我已通过链接测试目录并访问它成功测试了这一点。
答案1
好的,我明白了。问题出在 SELinux 上。
该策略httpd_use_cifs
已设置为关闭。我可以通过运行以下命令来查看:
getsebool -a | grep httpd
然后我看到了httpd_use_cifs --> off
。剩下要做的就是更改策略:
setsebool -P httpd_use_cifs on
注意:该-P
标志将策略写入磁盘,因此它们将在重新启动后继续存在。您可以省略 -P 标志,以暂时测试您的策略更改而不将其提交到磁盘。
答案2
对我来说最简单的事情就是作为 /var/www/html/ 的符号链接,例如 ln-s /path/to/share/ linkname。