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 john
pueden tener acceso completo a /var/www/domain1.com
y /var/www/domain2.org
pero 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-data
solo 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.d
y el usuario puede configurarlo libremente.
Mis ideas hasta ahora eran agregar un grupo llamado sftp
y configurar sshd
para 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?