Alojamiento compartido: cómo evitar que un usuario vea los archivos de otra persona pero aún pueda escribir en sus archivos mediante Apache/PHP

Alojamiento compartido: cómo evitar que un usuario vea los archivos de otra persona pero aún pueda escribir en sus archivos mediante Apache/PHP

he leído¿Qué permisos deberían tener los archivos/carpetas de mi sitio web en un servidor web Linux?y aquí hay una pregunta vinculada. Digamos:

  • /var/www/bobweb/es propiedad debob:bob

  • /var/www/eveweb/es propiedad deeve:eve

y que cada sitio tiene un Apache VirtualHost, enlazando abobweb.comyeveweb.com.

Apache debe poder escribir en cada sitio web (hay un cargador de imágenes en ambos sitios web), por lo que leo a menudo:

"¡Simplemente hazlo chgrp -R www-data /var/www/bobweb/, ídem para Eve, y eso es todo!"

Esto da:

drwxrwx---  3 bob    www-data 4096 Jan  9 17:45 bobweb
drwxrwx---  5 eve    www-data 4096 Feb 26  2019 eveweb

De hecho, esto impide que Bob visite los archivos de Eve desde Shell/SSH y viceversa.

Peroparece que Eve podría escribir un script PHP (ejecutado por www-data) para leer (o incluso modificar) /var/www/bobweb/wp-config.php(¡robando así la contraseña de la base de datos de Bob!).

Pregunta: ¿Cómo modificar las propiedades y permisos de usuarios+grupos para evitar que Bob lea los archivos de Eve y viceversa, pero aún así permitir que Apache+PHP escriba datos en estos sitios web?

(situación típica de alojamiento compartido)

Respuesta1

Esto no se puede hacer completamente solo con permisos de archivos; debe buscar las aplicaciones que está ejecutando para crear cárceles. Para PHP puedes usar "open_basedir"por host virtual.

También querrá algo similar en su servidor FTP (no ha indicado qué servidor está utilizando, pero muchos/la mayoría tienen una directiva adecuada).

Por supuesto, si permite cgis, todo el espacio del problema cambia.

información relacionada