/var/lib/firebird/data 10.0.0.20(rw,setuid,no_root_squash)

/var/lib/firebird/data 10.0.0.20(rw,setuid,no_root_squash)

更新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 服务器导出共享。以下是一些可能指明方向的参考资料:

NFS 挂载“权限被拒绝”错误
共享 NFS 资源

答案3

通常,Apache 以不同的用户 (fe) 运行www。您通过 ... 访问目录root,当然您可以这样做。

更改已安装文件夹的权限以反映允许 Apache 用户进入它们。

答案4

我们的系统管理员帮我解决了这个问题。他说他

  • 在 nfs 服务器和客户端上创建新组 xyz,然后将 firebird 和 wwwrun 添加到该组中
  • 卸载目录并在服务器和客户端上设置完全相同的用户、组和权限
  • 再次安装它并且它工作自......

相关内容