Compartilhar via


Parte 2.3.1 - [Opcional] Configure o aplicativo ASP.NET Core no Linux para iniciar automaticamente em um usuário diferente

Aplica-se a: .NET Core 2.1, .NET Core 3.1, .NET 5

Este artigo apresenta como configurar o aplicativo ASP.NET Core no Linux para iniciar automaticamente em um usuário diferente.

Pré-requisitos

Para seguir os exercícios desta parte, você deve primeiro seguir a configuração descrita nas partes anteriores desta série. Além disso, você deve ter o seguinte:

  • Uma máquina virtual Linux, preferencialmente executando a distribuição Ubuntu 18.04 LTS do Linux.
  • Nginx rodando automaticamente e escutando solicitações na porta 80.
  • Nginx configurado como um proxy reverso e roteando solicitações de entrada para um aplicativo ASP.NET Core que está escutando na porta 5000.
  • O aplicativo ASP.NET Core configurado para iniciar automaticamente após a reinicialização do servidor ou quando o processo for interrompido ou travar.

Objetivo desta parte

Na parte anterior, você criou um arquivo de serviço para nosso aplicativo principal ASP.NET e configurou o serviço para ser executado no contexto www-user integrado.

No entanto, em alguns ambientes, talvez você queira executar seus aplicativos em diferentes contextos de usuário. Isso lhe daria controle total sobre o isolamento de outros aplicativos que podem estar sendo executados no mesmo servidor. Por exemplo, se você hospedar vários aplicativos Web, talvez queira configurar cada aplicativo para ser executado em sua própria conta de usuário para ter a flexibilidade de configurar permissões separadamente para cada aplicativo (em vez de executar todos os aplicativos no mesmo contexto de usuário www-data).

O objetivo é configurar o aplicativo principal ASP.NET para ser executado em uma conta de usuário específica.

Você praticará como criar um usuário e aprenderá a listar as outras contas de usuário disponíveis no computador.

Observação

Esta parte é opcional. Também não importa em qual contexto de usuário você executa seu aplicativo ASP.NET Core para o restante da série de tutoriais.

Criar um novo usuário para executar seu aplicativo

Você começará criando um novo usuário e editando seu arquivo de serviço para executar seu serviço dentro desse novo contexto de usuário. Para criar a conta de usuário, execute o sudo adduser <username> comando. Para esta demonstração, o nome de usuário escolhido é firstappuser. No entanto, sinta-se à vontade para usar qualquer nome que desejar.

Captura de tela do comando sudo adduser.

Esta captura de tela mostra o resultado da criação da firstappuser conta.

Lembre-se de que o serviço principal do ASP.NET é executado no contexto do usuário www-data. Esta é uma conta interna usada para aplicativos de serviço, incluindo Apache e Nginx. Recomendamos que você use essa conta para essas cargas de trabalho. Se verificarmos as associações de grupo de ambos os usuários executando os groups www-data comandos and groups firstappuser , você não notará nenhuma diferença.

As contas de usuário locais no Linux são armazenadas no arquivo /etc/passwd . Se você executar sudo cat /etc/passwdo , verá todos os usuários, incluindo o usuário root. A captura de tela a seguir descreve cada coluna.

Captura de tela do comando sudo cat.

Para ver as diferenças entre os usuários e firstappuser , www-data execute o sudo cat /etc/passwd | grep 'www-data\|firstappuser' comando. A saída será semelhante à seguinte.

Captura de tela do comando sudo cat grep.

Observação

O www-data usuário configurou /usr/sbin/nologin para o shell. Isso significa que o www-data usuário não pode fazer logon neste computador interativamente usando SSH. No entanto, firstappuser é capaz de fazer isso. Como a nova conta será uma conta de serviço, faz sentido, como medida de segurança, impedir que a conta de usuário faça logon.

Para desabilitar o acesso ao shell, execute o sudo usermod -s /usr/sbin/nologin firstappuser comando.

Captura de tela do comando sudo usermod.

Até agora, você criou uma conta (firstappuser) que pode ser usada como nossa conta de serviço. A próxima etapa é configurar o serviço principal do ASP.NET para ser executado nessa conta de usuário. Abra o arquivo de serviço usando um comando vi. Substitua "www-data" por "firstappuser" (ou qualquer nome de usuário que você escolher) e salve o arquivo.

Captura de tela do firstappuser no comando.

Isso permite que o aplicativo ASP.NET Core seja iniciado usando uma conta de usuário diferente da conta padrão www-data .

Depois de alterar o arquivo de serviço, recarregue a configuração executando sudo systemctl daemon-reload. Em seguida, reinicie o serviço executando sudo systemctl restart myfirstwebapp.serviceo .

Verifique se o aplicativo é executado na nova conta de usuário

Existem vários métodos para identificar o usuário que executa um processo específico. Por exemplo, você pode executar ps -aux | grep <username>o . Embora essa abordagem possa ser útil, você ainda perderá algumas informações, como o conteúdo real da linha de comando. No entanto, existe uma maneira fácil de coletar informações mais completas usando htopo .

Nota: Htop é um gerenciador de tarefas. Será explicado mais adiante nesta série. Htop é pré-instalado em várias distribuições Linux, incluindo a versão do servidor Ubuntu que você provavelmente está usando. Se htop não estiver instalado em sua distribuição Linux, você poderá instalá-lo usando gerenciadores de pacotes.

Examine a captura de tela a seguir. Você pode obter o PID systemctl statusarquivo . Em seguida, passe o PID para o htop comando usando a -p opção para obter os detalhes do processo para esse PID.

Captura de tela do comando htop.

E aqui está a saída do htop -p <PID> comando.

Captura de tela do comando htop -p.

Como mostra a captura de tela, o aplicativo ASP.NET Core de exemplo agora é executado no novo usuário que foi criado usando os comandos discutidos nesta parte.

Para sair htop, pressione F10 ou Q.

Próximas etapas

Parte 2.4 - Proteger o Linux usando um firewall local e permitindo o acesso HTTP remoto de computadores remotos