这是在 CentOS 7 上,
我在 /mnt/t 下映射了一个 Windows 共享文件夹
/mnt/t 符号链接到 /var/www/html/users。
以 root 身份登录时,我可以毫无问题地从 /var/www/html/user 链接访问共享文件夹和所有子文件夹。
我在 Windows 共享的根目录中有一个 index.html 文件,位于 /mnt/t/index.html。Apache
正确显示了 index.html 文件,所以我知道它可以访问 Windows 共享(这并没有完全起作用,需要编辑 httpd.conf)。Apache
不允许我访问 Windows 共享上顶部以下的任何文件夹,并显示“禁止访问,您无权访问...”错误消息。
错误日志显示“不允许符号链接或链接目标不可访问:/var/www/html/users”
我用来访问 Windows 共享的 Windows 帐户的用户名是“linux”。
我不明白为什么 Windows 会让 Apache(或用户“linux”)查看顶部目录中的文件,但不允许查看较低目录中的文件。 Windows 服务器对文件夹的限制并不比对文件的限制多。
我尝试了本论坛和其他论坛上找到的许多方法,但都没有成功。大多数方法都在下面显示的 httpd.conf 文件中。
欢迎提出任何建议。
回答问题:Apache 以 UID 48 运行。这是我用来映射 Windows 共享的 UID:
\\FWB-FILE-V01\Public /mnt/t cifs ip=10.168.1.32,用户, uid=48,rw,suid,iocharset=utf8,凭据=/root/.smbcredentials 0 0
我已经向 Windows 系统管理员询问了信息,我将发布他的答案。
以下是 httpd.conf (删除了注释):
服务器根目录“/etc/httpd” 收听 10.168.101.35:80 包括 conf.modules.d/*.conf 用户 apache Apache 组 ServerAdmin root@localhost 服务器名称 10.168.101.35:80 <目录 /> 选项索引FollowSymLinks包括ExecCGI AllowOverride 无 要求全部拒绝 </目录> 文件根目录“/var/www/html” <目录 "/var/www"> 选项索引FollowSymLinks包括ExecCGI AllowOverride 无 # 允许开放访问: 要求所有已授予 </目录> # 进一步放宽对默认文档根目录的访问: <目录 "/var/www/html"> 选项 全部 AllowOverride 无 命令允许、拒绝 允许所有人 要求所有已授予 </目录> <目录 "/var/www/html/users"> 选项索引FollowSymLinks包括ExecCGI AllowOverride 无 命令允许、拒绝 允许所有人 # 允许开放访问: 要求所有已授予 </目录> <目录 "/var/www/html/users/*"> 选项索引FollowSymLinks包括ExecCGI AllowOverride 无 命令允许、拒绝 允许所有人 # 允许开放访问: 要求所有已授予 </目录> <目录“/mnt/t”> 选项索引FollowSymLinks包括ExecCGI AllowOverride 无 命令允许、拒绝 允许所有人 # 允许开放访问: 要求所有已授予 </目录> <目录“/mnt/t/users”> 选项索引FollowSymLinks包括ExecCGI AllowOverride 无 命令允许、拒绝 允许所有人 # 允许开放访问: 要求所有已授予 </目录>
注意:这不是完整的 httpd.conf 文件,只有顶部部分有我所做的更改。其余部分自安装以来没有改变。该机器上没有虚拟主机。
Windows 共享文件夹不包含任何符号链接。
当以“linux”身份登录时,我可以访问共享驱动器中的所有文件和文件夹。我无法以“apache”身份登录...
仍然没有进展:( 如能提供任何帮助,不胜感激!
截至 3 月 29 日,我这边没有新的回复,也没有新的结果。我快绝望了。
我尝试了一些与 SE Linux 相关的事情,但没有成功。SE Linux 已启用,我尝试过暂时禁用它,但没有任何效果。