
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.