Apache/php 无法访问远程 cifs/samba 共享

use*_*257 2 linux samba apache-http-server permissions

我试图了解我的问题可能在这里:

我正在使用基于 LAMP 的 Web 应用程序,该应用程序需要访问我已成功安装的 samba 共享

mount -t cifs ...
Run Code Online (Sandbox Code Playgroud)

在应用程序中,无法像其他目录一样访问 samba 共享。但是,我可以通过终端访问它就好了。这是 Apache 的权限问题吗?如果是这样,我将如何从远程计算机向 apache 授予权限?

Dan*_*Dan 5

这听起来像是一个权限问题——无论 Apache 正在运行的哪个用户都可能无权访问共享。

有几种方法可以解决这个问题,具体取决于托管 samba 共享的内容。最简单的方法是在挂载时强制所有者和组为 Apache 用户/组。这有点将您系统上的特定用户/组映射到用于连接到共享的用户凭据(其他人可以在这里提供更好的解释)。

假设您没有使用过 suexec,Apache 可能以用户“www-data”的身份运行。如果 Apache 以任何其他用户身份运行,则必须修改以下命令以将 www-data 替换为适当的用户名和组名。

例子:

mount -t cifs -o user=smbusername,uid=www-data,gid=www-data //server/stuff /mnt/stuff/

挂载后,www-data 将显示为挂载点的所有者,Apache 将能够读取它。

请注意,这将赋予 Apache 您在 samba 服务器上分配给smbusername 的任何权限。根据您要执行的操作,您可能希望通过在选项中添加“ro”来将其挂载为只读:

mount -t cifs -o user=smbusername,uid=www-data,gid=www-data,ro //server/stuff /mnt/stuff/

这可能会略有不同,具体取决于您的 Apache 和 samba/cifs 版本 - 如果它不起作用,请告诉我,以及您使用的操作系统和版本,我会尽力提供帮助。