Permisos de archivos para entorno de alojamiento compartido

Permisos de archivos para entorno de alojamiento compartido

Estoy intentando configurar un entorno de alojamiento compartido donde los usuarios tengan acceso SFTP a una o varias carpetas. Considere el siguiente escenario:

/var/www/contiene varios directorios que representan dominios. Los usuarios pueden agregar, modificar o eliminar archivos en directorios basados ​​en ACL, por lo que johnpueden tener acceso completo a /var/www/domain1.comy /var/www/domain2.orgpero no /var/www/domain3.de. Al mismo tiempo, por supuesto, el servidor web debe poder leer los archivos de todos los directorios.

Lo que no entiendo del todo es cómo asegurar todo de tal manera que

  • todos los usuarios están encarcelados /var/www/y solo ven los dominios (subcarpetas) que pueden ver
  • el usuario de Apache www-datasolo tiene acceso de lectura a todas las carpetas
  • PHP tiene acceso de escritura a algunas carpetas, como la carpeta de carga del usuario o una carpeta de registro dentro/var/www/domain/
  • Los archivos nuevos cargados a través de SFTP obtienen los permisos correctos automáticamente y el usuario puede especificar qué carpeta puede escribir PHP sin que otros usuarios de alojamiento compartido puedan acceder a ella.

Con PHP me refiero a una instancia de PHP-FPM en la que cada dominio es una entrada independiente pool.dy el usuario puede configurarlo libremente.

Mis ideas hasta ahora eran agregar un grupo llamado sftpy configurar sshdpara encarcelar a los usuarios que pertenecen al grupo sftp, /var/www/permitirles la autenticación de contraseña y agregar ForceCommand internal-sftp. Luego, configuraría las ACL predeterminadas de forma recursiva para las carpetas internas /var/www/para que los usuarios correctos tengan acceso a los directorios correctos. Pero, ¿qué configuro como usuario y grupo propietario de las carpetas? ¿Tengo que ajustar la umask? ¿Cuál es el usuario y grupo apropiado para la respectiva instancia del grupo PHP-FPM?

información relacionada