entendendo como executar o script com segurança como usuário limitado

1

Eu tenho feito isso ( link ) para aprender linux. Então, minha pergunta é sobre algumas coisas que eu não entendo completamente.

Uma das coisas que quero fazer é executar o script gerado (no meu aplicativo) como um usuário limitado. Então eu crio um limiteduser . Então eu posso definir limites de garfo assim : limiteduser hard nproc 300 .

Isso é o caminho certo de executar um script como limiteduser :

sudo -u limiteduser perl myscript.pl

Em segundo lugar , e se eu tivesse solicitações simultâneas que bifurcassem e executassem e executassem o código acima simultaneamente, com scripts diferentes. Isso causaria problemas? Eu ouvi que seria, se dois processos foram executados no mesmo usuário ou algo assim?

Especificamente, estou rodando no Ubuntu, mas suponho que isso se aplica a qualquer distro * nix?

Atualização: Além disso, pretendo usar o Tempo para expirar um script se demora muito, então, idealmente, devo ter um número limitado de processos em execução.

    
por gideon 19.02.2013 / 10:45

2 respostas

2

Primeiro, o sudo é uma boa maneira de executar um script como um usuário limitado.

Em segundo lugar, se haverá problemas ao executar mais de uma instância do script ao mesmo tempo, isso dependerá do que o script realmente faz. Não tem nada a ver com se as várias instâncias são executadas pelo mesmo usuário - em vez disso, é necessário considerar se o script, por exemplo, tenta editar um arquivo, em cujo caso duas instâncias podem tentar editar o mesmo arquivo ao mesmo tempo, o que pode deixar o arquivo em um estado inesperado.

Além disso, é claro, se você está limitando quantos processos o usuário tem permissão para executar, ou quanto de memória é permitido consumir, então, em algum momento, você pode encontrar o limite e o script não será capaz de fazer o que você quer. Mas essa é uma característica de todo o sistema de limitação. (Se você não tem limites, então um programa mal escrito pode fazer com que todo o seu sistema pare. Mas, novamente, é por causa de como o programa está escrito, não por quem o executa (exceto se você executar o programa como root, então é muito mais fácil quebrar as coisas, e é por isso que é bom que você tenha o usuário limitado executando as coisas).

    
por 19.02.2013 / 10:56
1

Em relação ao seu primeiro ponto, esta é uma maneira de fazer isso! Está correto.

Sobre o segundo ponto, o Unix / Linux pode lidar com muitos processos concorrentes, como qualquer sistema operacional multi-processo. Quando causa problemas, é devido a contenções de recursos normalmente. Então, todos os seus processos irão acessar um arquivo, ou um sistema de arquivos em um armazenamento lento, ou um recurso IPC com um grande bloqueio de gordura, etc. Então, basicamente os problemas que você teria no OS X ou Windows, têm semelhanças no Mundos Linux / Unix.

    
por 19.02.2013 / 11:01