Можно ли настроить Apache на обслуживание только файлов, доступных для чтения всем?

Можно ли настроить Apache на обслуживание только файлов, доступных для чтения всем?

Я запускаю экспериментальный веб-сервер Apache just-for-fun. Часть идеи этого сервера заключается в том, что он должен быть необычайно открыт для публики; например, корневая файловая система должна быть открыта для просмотра любым желающим. (И в самом деле, вот она:http://sylvester.s.zbasu.net/rootfs/) В результате безопасность отойдет на второй план.

Тем не менее, есть вещи, к которым Apache должен иметь доступ, но не публика. Пример, с которым я сталкиваюсь, — это сайт Django. Файл settings.pyдолжен быть доступен для чтения Apache, иначе Django не будет работать. Но settings.pyне должен быть доступен для чтения публике, поскольку содержит секретный ключ. Поэтому файл должен принадлежать www-data, но Apache тем не менее должен отказаться обслуживать его.

Одним из возможных решений (спасибо ellipsis753на Freenode) является создание специальной директивы, возможно, в файле .htaccess, сообщающей Apache не обслуживать этот файл. Однако я полагаю, что если файл не может быть прочитан всеми пользователями, то, вероятно, он не должен обслуживаться и Apache.

Могу ли я указать Apache, что если файл недоступен для чтения всем, то его не следует обслуживать?

решение1

Если вы запускаете свое приложение Django под FastCGI или в режиме Daemon mod_wsgi, то вы можете запустить его как другого пользователя, а не того, под которым запущен Apache. Затем вы можете полностью удалить разрешение Apache и World на чтение любого файла, который вы не хотите обслуживать.

Например, обратите внимание, что ваш файл паролей/etc/shadowуже недоступен, потому что у Apache нет разрешений на него, и он не доступен для чтения всем. Если вы создадите нового пользователя, например web-apps, и добавите его WSGIDaemonProcess myapp user=web-apps ...в конфигурацию Apache, то вы можете сделать так, чтобы приложение Django принадлежало пользователю web-apps, а его файл конфигурации не доступен для чтения всем, как и shadowфайл, который уже доступен.

Связанный контент