如何从php获取装载目录的rw访问?

分享于 

5分钟阅读

电脑

  繁體 雙語

问题:

UPDATE2

如果我在装入的目录中执行 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 -0.1 x86_64 x86_64 x86_64 gnu/Linux ) ( Linux wwwdev 2.6.22.19 -default #1 SMP/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: 轮 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

我可以从 shell 访问这个目录,但是php给了我一个错误 Permission denied (errno 13) 如果我做 chdir('/var/lib/firebird/data');


[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) 组。 我不太确定NFS如何处理这两个框中的异常,但是如果这是一个例子,我们可以排序。

这可能不是最安全的方法,但是我不确定你的约束。

只是好奇。web网络服务器需要直接访问这里位置的原因? 如果这是数据库文件的位置,那么如果你不十分小心,那么它可以打开数据损坏的新途径。 使用 firebird/interbase连接器是否更好?


回答 2:

要更改装入驱动器的权限,请确保Apache用户允许在fstab文件中访问。

Apache用户帐户在Apache配置文件( httpd.conf ) 中指定,可能类似于"www数据"( 取决于配置)。

见本文:如何编辑和理解/etc/fstab。

EDIT1

如果fstab没有问题,那么下一个停止就是 se linux。
nfs se linux se linux版文档文档中:

se linux策略可以根据最低访问要求定制。 因此,默认情况下 se linux策略不允许nfs共享文件。

如果你想共享文件读/写,你必须设置nfs_export_all_rw布尔值。

setsebool -P nfs_export_all_rw 1

要绝对确定 se linux不会干扰,请参阅如何禁用 se linux服务器。

EDIT2

我可以找到的下一个步骤是检查你是否正确地从NFS服务器导出了共享。 下面是一些可能指向的参考:

nfs挂载"权限被拒绝"错误
共享NFS资源


回答 3:

通常,Apache正在运行的是不同的用户( 例如。 www )。你正在通过 root 访问目录。当然可以这样做。

更改已经挂载文件夹的权限以反映允许apache用户输入它们。


回答 4:

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

  • 在nfs服务器和客户端上创建新的组 xyz,然后将 firebird 和wwwrun添加到这个组
  • 在两个( 服务器和客户端) 上完全相同的目录,组,权限,完全相同
  • 再装一次以后就能成功了。


PHP  acc  DIR  Mount  
相关文章