Como executar um serviço como um usuário que não pode excluir ou atualizar ou criar um arquivo

1

O Mongodb é um consol baseado na web e para experimentar o Mongodb.

Eu criei algo semelhante para testar nodejs . Em nodejs, aceito a entrada do usuário e, em seguida, estou executando eval nesse comando. Dado o poder do nodejs, alguém do console da web pode criar um arquivo, excluir arquivos no sistema ou executar rm -rf .

Eu queria saber se seria correto executar nodejs como um usuário chamado node . Este nó de usuário não terá nenhum privilégio para escrever qualquer coisa, criar qualquer coisa ou atualizar qualquer coisa. O único acesso que esse usuário terá é o acesso de leitura.

Isso funcionará ou isso é muito risco? O que é uma boa estratégia para lidar com tal situação?

    
por user35340 08.04.2010 / 23:18

2 respostas

1

A execução como usuário com menos privilégios pode ajudar. Para um nível extra de paranóia, você poderia executar o serviço dentro de uma cadeia chroot mínima, opcionalmente dentro de um imagem de disco montada em loopback para limitar o uso de espaço em disco - o usuário não pode executar programas ou preencher espaço em disco se eles não puderem ser acessados. Coloque exatamente e somente os arquivos e espaço livre que eles precisarão nesse sistema de arquivos. Eles não poderão acessar mais nada. Como benefício extra, você pode usar apenas um único comando cp para fazer backup ou restaurar o estado da imagem. Considere também o uso de nice e ulimit para controlar o uso de outros recursos.

    
por 10.04.2010 / 09:27
0

Hrm, o problema é que, se ele tiver acesso aos arquivos que possui, os usuários provavelmente poderiam facilmente definir permissões para algo editável. Lembre-se, se você está dando aos usuários acesso aos comandos do shell, você já se abriu para uma série de problemas. Isso geralmente é uma má ideia.

Mesmo que o usuário não possua nenhum arquivo e apenas exista para executar seu aplicativo, você está se abrindo para coisas como diretórios temporários completos e spools de correio.

Existe alguma maneira de executar o mecanismo V8 em um ambiente restrito? Desativar todos os pedidos de veiculação? Eu pessoalmente procuraria por um método como esse.

    
por 09.04.2010 / 08:53