2012-02-10 100 views
1

我的Rails應用程序(3.0.11)訪問文件系統以下載用戶通過SMB將文件系統放入的文件。不幸的是,OS X Lion的服務器通過與這些權限SMB創建文件...send_file和文件權限

RWX ---用戶大家

...但它確實通過ACL添加相應的權限。運行rails的用戶是「admin」,通過ACL可以完全訪問這些文件。現在的問題......

由send_file說,它無法訪問該文件。如果我添加POSIX權限文件「人人」,其中管理是一部分像這樣的......

RWX RX ---用戶大家

...那麼它可以訪問它,即使它應該只能通過ACL訪問它。如果我把權限回...

RWX ---用戶大家

...然後嘗試File.open而不是由send_file導軌可以讀取該文件。我甚至可以使用打開的文件並將其提供給send_data並且可以工作,但是當我這樣做時我不能使用X-Sendfile。

那麼send_file發生了什麼?

回答

0

滑軌使用http://rack.rubyforge.org/doc/Rack/Sendfile.html基本上引入了一個頭中的響應(X-SENDFILE)。 Web服務器然後負責將文件發送到客戶端。

這就是爲什麼你必須使文件訪問到Web服務器用戶(在基於Debian的系統,這通常是www數據)。

看看上面的鏈接。它爲您提供了Nginx,Lighttpd和Apache的配置示例。但是,另外,您必須使文件對(例如)萬維網數據可讀。

+0

對。但是,apache用戶是否尊重ACL權限?在我看來,似乎沒有。我將Everyone ACL設置爲讀取,_www用戶位於Everyone組中,但仍然無法訪問該文件。 – 2012-02-27 17:01:00