Tengo un sitio web, donde los usuarios están disponibles para cargar pequeñas aplicaciones que se ejecutan 24/7 en mi servidor.
Entonces, si el usuario carga una aplicación, se crearán algunas carpetas:
/{USER_ID}/{APP_ID}/
(si la carpeta de usuario ya existe, la carpeta /{USER_ID}/
no se volverá a crear)
Dentro de este directorio, los archivos de la aplicación serán almacenados.
Para cada aplicación que el usuario cree, se creará un archivo bash
dentro de la carpeta /{APP_ID}/
que contiene el comando de inicio de la aplicación.
Por ejemplo, si el usuario carga una aplicación. NET Core
, se creará un archivo bash que contiene nohup dotnet app.dll ...
.
Mi pregunta es cómo puedo asegurar mi servidor de la mejor manera para limitar los derechos de las aplicaciones del usuario.
Si el usuario creó la aplicación, puede hacer clic en el botón de inicio en el sitio web que ejecutará el archivo start.sh
bash.
¿Qué sucede si la aplicación que el usuario cargó cambia el contenido del archivo bash que puede dañar el servidor?
Quiero evitar eso haciendo que el archivo bash no sea editable / movible / eliminable, etc.
Pero supongo que puedes hacer más cosas malas para dañar el servidor.
Entonces, cómo puedo evitar que el usuario solo tenga derechos para hacer cosas dentro de su propia carpeta ( /{USER_ID}/
) [solo usuario porque no me importa si el usuario daña sus propias aplicaciones].
Mi idea es que si el directorio ( /{USER_ID}/
) se creará primero, php creará un usuario en mi servidor con solo derechos dentro de la carpeta /{USER_ID}/
.
¿Será esto lo suficientemente seguro?
Mi sistema operativo es Ubuntu 16.04.