send_file 和文件权限

发布于 2025-01-04 10:21:42 字数 531 浏览 0 评论 0原文

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

rwx --- --- 用户所有人

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

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

rwx rx --- 用户每个人

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

rwx --- --- user every

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

那么 send_file 是怎么回事?

My rails application (3.0.11) accesses the file system to download files that users have put onto the file system via SMB. Unfortunately, OS X Lion Server creates files via SMB with these permissions...

rwx --- --- user everyone

...but it does add the appropriate permissions via ACL. The user that rails is run under is "admin" which has full access to the files via the ACLs. Now the problem...

send_file says it cannot access the file. If I add POSIX permissions to the file for "everyone" in which admin is a part of like this...

rwx r-x --- user everyone

...then it can access it even though it should be able to access it only via ACLs. If I put the permissions back to...

rwx --- --- user everyone

...and then try a File.open instead of a send_file rails can read the file. I can even use the open file and feed it to send_data and that works, but I can't use X-Sendfile when I do this.

So what's going on with send_file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的那么颓废 2025-01-11 10:21:42

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

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

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

Rails is using http://rack.rubyforge.org/doc/Rack/Sendfile.html which basically introduces a header in the response (X-Sendfile). The Webserver is then responsible for sending the file to the client.

This is why you have to make the file accessible to the webserver user (on Debian based systems, this is usually www-data).

Have a look at the link above. It gives you configuration examples for Nginx, Lighttpd and Apache. But additionally, you have to make the file readable for (e.g.) www-data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文