1

我的 rails 应用程序 (3.0.11) 访问文件系统以下载用户通过 SMB 放入文件系统的文件。不幸的是,OS X Lion Server 通过具有这些权限的 SMB 创建文件...

rwx --- --- 用户每个人

...但它确实通过 ACL 添加了适当的权限。运行 rails 的用户是“admin”,他可以通过 ACL 完全访问文件。现在问题...

send_file 说它无法访问该文件。如果我为“每个人”的文件添加 POSIX 权限,其中管理员是这样的一部分......

rwx rx --- 用户每个人

...然后它可以访问它,即使它应该只能通过 ACL 访问它。如果我把权限放回......

rwx --- --- 用户每个人

...然后尝试使用 File.open 而不是 send_file rails 可以读取文件。我什至可以使用打开的文件并将其提供给 send_data 并且可以,但是当我这样做时我不能使用 X-Sendfile。

那么 send_file 是怎么回事呢?

4

1 回答 1

0

Rails 正在使用http://rack.rubyforge.org/doc/Rack/Sendfile.html,它基本上在响应中引入了一个标头(X-Sendfile)。然后,Web 服务器负责将文件发送到客户端。

这就是为什么您必须让网络服务器用户可以访问该文件(在基于 Debian 的系统上,这通常是 www-data)。

看看上面的链接。它为您提供了 Nginx、Lighttpd 和 Apache 的配置示例。但此外,您必须使文件对(例如)www-data 可读。

于 2012-02-10T09:05:51.630 回答