send_file и права доступа к файлу - PullRequest
1 голос
/ 10 февраля 2012

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

rwx --- --- user Everyone

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

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

rwx rx --- пользователь каждый

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

rwx --- --- user каждому

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

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

1 Ответ

0 голосов
/ 10 февраля 2012

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

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

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

...