更新2
如果我ls
在挂载的目录中执行此操作,php 脚本至少会运行一次。很奇怪,不是吗。
我想从我的 php 脚本访问一个目录,该脚本挂载自
datadev 服务器(Linux datadev 2.6.22.18-0.2-default #1 SMP 2008-06-09 13:53:20 +0200 x86_64 x86_64 x86_64 GNU/Linux)
进入 wwwdev(Linux wwwdev 2.6.22.19-0.1-default #1 SMP 2008-10-14 22:17:43 +0200 x86_64 x86_64 x86_64 GNU/Linux)
通过 nfs
/etc/exports 就像(尝试了一些对我不起作用的东西)
- /var/lib/firebird/data 10.0.0.20(rw,no_root_squash)
/var/lib/firebird/data 10.0.0.20(rw,setuid,no_root_squash)
/var/lib/firebird/data -mapall=wwwrun:wheel 10.0.0.20(rw)
/var/lib/firebird/data 10.0.0.20(rw,all_squash,anonuid=30,anongid=100)
/etc/fstab 就像
- 10.0.0.21:/var/lib/firebird/data /var/lib/firebird/data nfs 默认值 0 0
Permission denied (errno 13)
我可以从 shell 访问该目录,但是如果我执行 chdir('/var/lib/firebird/data'); ,php 会给出错误。
[root][wwwdev /var/lib/firebird/data] ls -la
total 44G
-rw-rw---- 1 firebird firebird 64M Jun 10 15:43 ?
-rw-rw---- 1 firebird firebird 307M Jun 15 10:27 ?OQben.gdb
drwxr-xr-x 2 firebird firebird 16K Jul 21 16:55 ./
drwxr-xr-x 3 firebird wheel 4.0K Jul 21 11:36 ../
-
[root][datadev /var/lib/firebird/data] ls -la
total 44G
-rw-rw---- 1 firebird firebird 64M Jun 10 15:43 ?
-rw-rw---- 1 firebird firebird 307M Jun 15 10:27 ?OQben.gdb
drwxr-xr-x 2 firebird firebird 16K Jul 21 16:55 ./
drwxr-x--- 4 firebird firebird 4.0K May 7 12:19 ../
我的 php 脚本可以编辑 config.ini 文件
root][wwwdev /var/lib/edumate/imacs/radek/3.0] ls -la
total 128K
drwxr-xr-x 19 wwwrun wheel 4.0K Jul 21 16:27 ./
drwxr-xr-x 6 wwwrun wheel 4.0K Jul 19 14:28 ../
-rw-r--r-- 1 wwwrun wheel 1.8K Jul 21 15:08 config.ini
更新
我想要一些已经为我工作的东西。我已将目录从我的 mac 安装到同一台服务器 wwwdev。在这两种情况下,wwwdev 都是 nfs 客户端。mac 上的 /etc/exports 中有此行/Users/radek/Sites -mapall=root:wheel -network 10.0.0.0 -mask 255.255.255.0
答案1
正如其他人所建议的,您应该修改导出目录的权限,以允许 Web 用户(wwwrun)
对其进行最低限度的访问。具体要将其更改为什么取决于您的系统和安全需求。
如果由于某种原因您无法修改目录的权限,您可能能够将 Web 用户添加(wwwrun)
到(firebird)
本地计算机上的组中。如果两个框上的 GID 不同,我不确定 NFS 将如何处理它,但如果是这种情况,我们可以对其进行分类。
这可能不是最安全的方法,但我不确定你对此的限制。
只是好奇... Web 服务器需要直接访问此位置的原因是什么?如果这是您的数据库文件的位置,如果您不非常小心,它可能会开辟一条新的数据损坏途径。使用 Firebird/InterBase 连接器不是更好吗?
答案2
要更改已安装驱动器的权限,请确保 Apache 用户在 fstab 文件中被允许访问。
Apache 用户帐户在 Apache 配置文件(httpd.conf)中指定,可能类似“www-data”(取决于配置)。
请参阅此文章:如何编辑和理解 /etc/fstab
编辑1
如果 fstab 没有问题,那么下一步就是 SELinux。
从nfs Selinux 策略文档:
SELinux 策略可根据所需的最小访问权限进行定制。因此,默认情况下,SElinux 策略不允许 nfs 共享文件。
如果您想共享文件读/写,您必须设置 nfs_export_all_rw 布尔值。
setsebool -P nfs_export_all_rw 1
要绝对确保 SELinux 不会干扰,请参阅如何禁用 SELinux。
编辑2
我发现的下一步也是最后一步是检查您是否已正确从 NFS 服务器导出共享。以下是一些可能指明方向的参考资料:
答案3
通常,Apache 以不同的用户 (fe) 运行www
。您通过 ... 访问目录root
,当然您可以这样做。
更改已安装文件夹的权限以反映允许 Apache 用户进入它们。
答案4
我们的系统管理员帮我解决了这个问题。他说他
- 在 nfs 服务器和客户端上创建新组 xyz,然后将 firebird 和 wwwrun 添加到该组中
- 卸载目录并在服务器和客户端上设置完全相同的用户、组和权限
- 再次安装它并且它工作自......