【问题标题】:send_file and file permissionssend_file 和文件权限
【发布时间】:2012-03-02 17:12:59
【问题描述】:

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

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

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

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

rwx r-x --- 用户每个人

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

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

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

那么 send_file 是怎么回事?

【问题讨论】:

    标签: ruby-on-rails-3 permissions x-sendfile


    【解决方案1】:

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

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

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

    【讨论】:

    • 对。但是 apache 用户是否尊重 ACL 权限?就我而言,它似乎没有。我设置了所有人 ACL 以供读取,_www 用户在所有人组中,但它仍然无法访问该文件。
    猜你喜欢
    • 2012-04-12
    • 2011-11-09
    • 2011-08-19
    • 2023-04-01
    • 2011-06-13
    • 2012-01-06
    • 2014-02-24
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多