Parte 2.3.1: [Opcional] Configurar la aplicación ASP.NET Core en Linux para que se inicie automáticamente en un usuario diferente
Se aplica a: .NET Core 2.1, .NET Core 3.1, .NET 5
En este artículo se presenta cómo configurar la ASP.NET Core en Linux para que se inicie automáticamente en un usuario diferente.
Requisitos previos
Para seguir los ejercicios de esta parte, primero debe seguir la configuración que se describe en las partes anteriores de esta serie. Además, debe tener lo siguiente:
- Una máquina virtual Linux, preferiblemente ejecutando la distribución de Ubuntu 18.04 LTS de Linux.
- Nginx se ejecuta automáticamente y escucha las solicitudes en el puerto 80.
- Nginx configurado como proxy inverso y enrutamiento de solicitudes entrantes a una aplicación ASP.NET Core que escucha en el puerto 5000.
- La ASP.NET Core configurada para iniciarse automáticamente después de reiniciar el servidor o cuando el proceso se detiene o se bloquea.
Objetivo de esta parte
En la parte anterior, creó un archivo de servicio para nuestra aplicación ASP.NET Core y configuró el servicio para que se ejecute en el contexto integrado de www-user.
Sin embargo, en algunos entornos, es posible que desee ejecutar las aplicaciones en contextos de usuario diferentes. Esto le daría control total sobre el aislamiento de otras aplicaciones que podrían ejecutarse en el mismo servidor. Por ejemplo, si hospeda varias aplicaciones web, es posible que desee configurar cada aplicación para que se ejecute con su propia cuenta de usuario con el fin de tener la flexibilidad de configurar los permisos por separado para cada aplicación (en lugar de ejecutar todas las aplicaciones en el mismo contexto de usuario de www-data).
El objetivo es configurar la aplicación ASP.NET Core para que se ejecute en una cuenta de usuario específica.
Practicará cómo crear un usuario y aprenderá a enumerar las otras cuentas de usuario que están disponibles en el equipo.
Nota
Esta parte es opcional. Tampoco importa en qué contexto de usuario ejecute la aplicación ASP.NET Core para el resto de la serie de tutoriales.
Crear un nuevo usuario para ejecutar la aplicación
Empezará creando un nuevo usuario y editando el archivo de servicio para ejecutar el servicio en ese nuevo contexto de usuario. Para crear la cuenta de usuario, ejecute el sudo adduser <username> comando. Para esta demostración, el nombre de usuario elegido es firstappuser . Sin embargo, no dude en usar cualquier nombre que desee.
Esta captura de pantalla muestra el resultado de crear la firstappuser cuenta.
Recuerde que el servicio ASP.NET Core se ejecuta en el contexto de usuario de www-data. Se trata de una cuenta integrada que se usa para aplicaciones de servicio, incluidos Apache y Nginx. Se recomienda usar esta cuenta para dichas cargas de trabajo. Si se comprueban las pertenencias a grupos de ambos usuarios mediante la ejecución de los comandos y, no se notará groups www-data groups firstappuser ninguna diferencia.
Las cuentas de usuario locales en Linux se almacenan en el archivo /etc/passwd. Si ejecuta , verá todos los sudo cat /etc/passwd usuarios, incluido el usuario raíz. En la siguiente captura de pantalla se describe cada columna.
Para ver las diferencias entre los www-data usuarios y firstappuser los usuarios, ejecute el sudo cat /etc/passwd | grep 'www-data\|firstappuser' comando. El resultado será similar al siguiente.
Nota
El www-data usuario se ha configurado para el /usr/sbin/nologin shell. Esto significa que el usuario no puede iniciar sesión www-data en este equipo de forma interactiva mediante SSH. Sin embargo, firstappuser puede hacerlo. Dado que la nueva cuenta será una cuenta de servicio, tiene sentido, como medida de seguridad, impedir que la cuenta de usuario se inicia sesión.
Para deshabilitar el acceso al shell, ejecute el sudo usermod -s /usr/sbin/nologin firstappuser comando.
Hasta ahora, ha creado una cuenta (firstappuser) que se puede usar como nuestra cuenta de servicio. El siguiente paso es configurar el servicio ASP.NET Core para que se ejecute dentro de esa cuenta de usuario. Abra el archivo de servicio mediante un comando vi. Reemplace "www-data" por "firstappuser" (o el nombre de usuario que haya elegido) y, a continuación, guarde el archivo.
Esto permite que ASP.NET Core aplicación comience con una cuenta de usuario diferente a la www-data cuenta predeterminada.
Después de cambiar el archivo de servicio, vuelva a cargar la configuración ejecutando sudo systemctl daemon-reload . A continuación, reinicie el servicio ejecutando sudo systemctl restart myfirstwebapp.service .
Comprobar que la aplicación se ejecuta en una nueva cuenta de usuario
Existen varios métodos para identificar al usuario que ejecuta un proceso específico. Por ejemplo, puede ejecutar ps -aux | grep <username> . Aunque ese enfoque puede resultar útil, todavía le faltará información, como el contenido real de la línea de comandos. Sin embargo, hay una forma fácil de recopilar información más completa mediante el uso de htop .
Nota: Htop es un administrador de tareas. Se explicará más adelante en esta serie. Htop está preinstalada en varias distros de Linux, incluida la versión del servidor Ubuntu que probablemente esté usando. Si htop no está instalado en el distro de Linux, puede instalarlo mediante administradores de paquetes.
Examine la siguiente captura de pantalla. Puede obtener el PID mediante la ejecución de systemctl status . A continuación, pase el comando al uso del modificador para obtener los detalles PID del proceso para ese htop -p PID .
Y este es el resultado del htop -p <PID> comando.
Como se muestra en la captura de pantalla, la aplicación de ejemplo ASP.NET Core se ejecuta ahora en el nuevo usuario que se creó mediante los comandos que se analizan en esta parte.
Para htop salir, presione F10 o Q.