【问题标题】:Read Windows Samba Share Directory with PHP from LAMP Server使用 PHP 从 LAMP 服务器读取 Windows Samba 共享目录
【发布时间】:2012-11-17 14:49:56
【问题描述】:

我有一个来自 Windows 网络的 Samba 共享安装到我基于 Linux 的 Web 服务器上的一个目录中。我已将目录挂载如下:

mount -t cifs -o username=admin,password='passsword',domain=mydomain.local,file_mode=0644,dir_mode=0777,uid=client_user,gid=client_user '//192.168.0.x/d$' /home/client_user/mnt

安装成功,我可以浏览操作系统中的文件和目录。但是,我希望能够通过从浏览器运行的 PHP 脚本来访问它。但是,对共享的任何文件操作都会导致权限被拒绝错误。我做了一点实验,用apache替换了uid和gid参数值,但还是没有运气。

非常感谢任何建议

编辑

在进一步的测试中,我创建了一个包含以下代码的文件:

if(is_readable('/path/to/mnt')) {
  echo 'Readable';
}
else {
  echo 'Not';
}

从服务器上的命令行运行它会导致打印 Readable。我已经以 root 和服务器上的用户身份运行它,但它无法在浏览器中运行。

【问题讨论】:

    标签: php linux windows file-permissions samba


    【解决方案1】:

    经过反复试验,我发现 SELinux 不允许 httpd 访问文件夹。

    运行此命令允许 httpd 访问 cifs:

    setsebool -P httpd_use_cifs on
    

    但是,进一步调查显示我可以仅在已挂载的文件夹上设置 httpd 上下文。所以我卸载了驱动器并修改了我的安装命令以包括:

    context="system_u:object_r:httpd_sys_rw_content_t:s0",
    

    完整的命令:

    mount -t cifs -o context="system_u:object_r:httpd_sys_rw_content_t:s0",username=admin,password='passsword',domain=mydomain.local,file_mode=0644,dir_mode=0777,uid=client_user,gid=client_user '//192.168.0.x/d$' /home/client_user/mnt
    

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 2011-09-04
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多