Como executar o arquivo php como usuário diferente com segurança?

2

Quero confirmar que meus pensamentos estão corretos, já que isso é questão de segurança.

Temos um aplicativo baseado na web que usa o banco de dados db2. O db2 é executado sob o usuário db2inst1 .

Agora, queremos que os usuários do aplicativo da Web possam restaurar imagens de backup do db2 em um banco de dados que chamamos de escola de reprodução. Usando este playschool eles "brincam" e não fazem mal ao banco de dados de produção. Para fazer isso, o script PHP db2restore precisa ser executado através da função PHP exec() .

É seguro o suficiente para se certificar de que ninguém pode abusar e executar comandos db2 como usuário PHP se:

  • adicionamos essa linha a /etc/sudoers

    php ALL=(db2inst1) NOPASSWD: /opt/eduserver/bin/db2restore
    
  • e, em seguida, execute dentro do PHP db2restore script este comando

    exec('sudo -u db2inst1 /opt/eduserver/bin/db2restore');
    

Nota

  • que nem todos os usuários finais terão acesso para executar o db2restore por meio da interface da web, somente o grupo de administradores onde eles "devem" saber o que estão fazendo.
  • nenhum usuário final teve acesso à linha de comando do servidor.
  • db2restore não está acessível via servidor da web
por Radek 19.06.2013 / 04:23

1 resposta

3

Não vejo nada de errado em fazer isso dessa maneira. A única coisa que surge é que alguém poderia jogar com o conteúdo do db2restore se esse arquivo fosse de propriedade de db2inst1 e não de root, por exemplo.

Também vou supor que esse banco de dados da escola não está no sistema de produção. Se for, então isso se torna uma má ideia, se os desenvolvedores estiverem logando no banco de dados de produção.

Em geral, ao fornecer acesso a um banco de dados, eu sempre criei historicamente contas de usuário no banco de dados e, em seguida, forneci recursos específicos (adicionar, descartar etc.) a essa conta de usuário específica.

    
por 19.06.2013 / 04:38