Você parece ter alguns equívocos sobre os logins de usuários.
Com /bin/bash
ou acesso direto ao Nodejs, um usuário pode modificar apenas arquivos que eles têm permissão para modificar. A maioria de /etc
provavelmente não pode ser gravada por jimmy
, portanto, eles não devem poder rm
do diretório inteiro.
Você está correto em usar /usr/sbin/nologin
, o usuário não conseguirá efetuar login no sistema. Executando uma interface do usuário da web para acesso Nodejs neste cenário, você ainda precisa ter certeza de que a interface do usuário da web não permite acessar arquivos que você não deseja ou que os usuários tenham acesso.
Independentemente da solução escolhida, não é possível executar vários serviços no mesmo endereço IP e porta. Você pode vincular o serviço à mesma porta em um endereço IP diferente ou usar uma porta diferente. Uma solução pode ser que cada usuário seja executado em sua porta e, em seguida, crie um servidor da Web para servir como um proxy para cada um desses serviços.
Você fala sobre o uso do Docker, então não tenho certeza de por que você não fica com isso, embora eu não saiba sobre as possíveis restrições de usuário com as quais você está trabalhando. É mais parecido com um chroot com isolamento adicional e gerenciamento de rede. O Docker é projetado principalmente para executar um único serviço, de modo que cada usuário que tenha seu próprio contêiner executando uma instância do Nodejs soe exatamente como um caso de uso.
Se o Docker não for uma opção, recomendo usar o chroot se você tiver certeza de que pode fazê-lo corretamente. Caso contrário, parece que seus requisitos podem ser atendidos com um único sistema que oferece logins para vários usuários com permissões adequadas em todos os lugares.