2012-02-10 2 views
1

Приложение rails (3.0.11) обращается к файловой системе для загрузки файлов, которые пользователи помещают в файловую систему через SMB. К сожалению, OS X Lion Server создает файлы через SMB с этими разрешениями ...send_file и права доступа к файлам

RWX --- --- пользователь все

... но он добавляет соответствующие разрешения через ACL. Пользователем, который управляет rails, является «admin», который имеет полный доступ к файлам через ACL. Теперь проблема ...

send_file говорит, что не может получить доступ к файлу. Если добавить разрешение POSIX в файл для «всех», в котором администратор является частью так ...

RWX ого --- пользователя всеми

... тогда он может получить доступ к нему, хотя это должен иметь доступ к нему только через ACL. Если я ставлю разрешения обратно ...

RWX --- --- пользователь все

... а затем попробовать File.open вместо того, send_file рельсам может прочитать файл. Я могу даже использовать открытый файл и кормить его send_data, и это работает, но я не могу использовать X-Sendfile, когда я это делаю.

Так что же происходит с send_file?

ответ

0

Rails использует http://rack.rubyforge.org/doc/Rack/Sendfile.html, который в основном вводит заголовок в ответе (X-Sendfile). Затем Web-сервер отвечает за отправку файла клиенту.

Именно поэтому вы должны сделать файл доступным для пользователя веб-сервера (в системах на базе Debian это обычно www-данные).

Посмотрите на приведенную выше ссылку. Он дает примеры конфигурации для Nginx, Lighttpd и Apache. Но, кроме того, вы должны сделать файл доступным для (например, www-data).

+0

Право. Но выполняет ли пользователь apache права ACL? В моем случае это не похоже. У меня есть ACL Everyone для чтения, _www пользователь находится в группе Everyone, но он все еще не может получить доступ к файлу. –

Смежные вопросы