¿Se puede configurar Apache para que sirva solo archivos legibles en todo el mundo?

¿Se puede configurar Apache para que sirva solo archivos legibles en todo el mundo?

Estoy ejecutando un servidor web Apache experimental solo por diversión. Parte de la idea detrás de este servidor es que debería estar inusualmente abierto al público; por ejemplo, el sistema de archivos raíz debería estar abierto para que cualquiera pueda explorarlo. (De hecho, aquí está:http://sylvester.s.zbasu.net/rootfs/) Como consecuencia, la seguridad pasará a un segundo plano.

Dicho esto, hay cosas a las que Apache debería poder acceder, pero el público no. El ejemplo con el que me encuentro es un sitio de Django. Apache debe poder leer el archivo settings.py; de lo contrario, Django no funcionará. Pero settings.pyno debe ser legible por el público, ya que contiene una clave secreta. Por lo tanto, el archivo debería ser propiedad de www-data, pero Apache debería negarse a entregarlo.

Una posible solución (gracias a ellipsis753Freenode) es crear una directiva especial, tal vez en un .htaccessarchivo, que le indique a Apache que no entregue este archivo. Sin embargo, me imagino que si un archivo no es legible por todos los usuarios, probablemente Apache tampoco debería entregarlo.

¿Puedo decirle a Apache que si un archivo no es legible en todo el mundo, entonces no debería entregarse?

Respuesta1

Si ejecuta su aplicación Django en FastCGI o en el modo Daemon de mod_wsgi, puede ejecutarla como un usuario diferente al que ejecuta Apache. Luego, puede eliminar por completo el permiso de Apache y World para leer cualquier archivo que no desee servir.

Por ejemplo, tenga en cuenta que su archivo de contraseña/etc/shadowya no es accesible porque Apache no tiene permisos y no es legible en todo el mundo. Si crea un nuevo usuario, digamos web-appspor ejemplo, y lo agrega WSGIDaemonProcess myapp user=web-apps ...a la configuración de Apache, entonces puede hacer que la aplicación Django sea propiedad del web-appsusuario, con su archivo de configuración no legible en todo el mundo, como shadowya lo es el archivo.

información relacionada