Automatizar a criação de usuários

Automatizar a criação de usuários

Eu tenho um site para meus alunos e ele está rodando no Ubuntu 14.04. Quando meus alunos se registram em meu site, armazeno as informações do usuário em um banco de dados MySQL.

Gostaria de dar aos meus alunos um site na minha instalação do Ubuntu, ao se cadastrarem no meu site, e gostaria que isso fosse automatizado. Minha pergunta é: posso de alguma forma usar os dados diretamente do banco de dados MySQL para fornecer a eles um subdomínio (nomedeusuário.mydoamin.com) no meu Ubuntu ou posso executar comandos shell no Ubuntu a partir de PHP e automatizar o que estou fazendo manualmente agora?

Responder1

posso executar comandos shell no Ubuntu a partir de PHP e automatizar o que estou fazendo manualmente agora?

Você pode executar comandos shell de dentro PHPusando oshell_exec()função ou usando o ` `operador (crase): se você estiver executando PHP<5.4.0, primeiro certifique-se de desabilitarmodo de segurança, em seu PHPscript você poderá usar qualquer uma dessas sintaxes:

  • $return = shell_exec('<shell_command>');
  • $return = `<shell_command>`;

A menos que você queira capturar valores de retorno de comandos únicos, a maneira mais direta de fazer o que você está pedindo seria condensar tudo o que você está fazendo manualmente no shell em um script independente bash(ou qualquer outro) a ser chamado uma vez usando qualquer um desses métodos. Por exemplo, a sintaxe de um bashscript seria:

  • $return = shell_exec('bash script.sh');
  • $return = `bash script.sh`;

Para passar parâmetros ao script (por exemplo, o valor de uma $usernamevariável):

  • $return = shell_exec("bash script.sh '$username'");
  • $return = `bash script.sh '$username'`;

Para recuperar os parâmetros passados ​​dentro do bashscript (por exemplo, o valor de uma $usernamevariável passada com o método acima):

#!/bin/bash

# ...
username=$1
# ...

Ou simplesmente faça referência $1quando necessário, por exemplo:

#!/bin/bash

# ...
echo "$1"
# ...

Responder2

Como acompanhamento de minha própria pergunta, elaborarei minha experiência. Fiz a execução do Shell funcionar a partir do PHP, mas tive grandes problemas de segurança com a solução. Esse foi um GRANDE erro da minha mão que eu não vi isso no início.

Para eliminar riscos de segurança, criei um script bash que procurava usuários ativados na tabela de usuários. Se o usuário estava ativo E não era um usuário Linux, então o usuário deve ser criado no meu Linux, um usuário de banco de dados é criado, um subdomínio é criado e o ssh é bloqueado para o usuário. Configurei um cron job executado a cada 60 minutos e, após a criação do usuário, um email é enviado ao usuário com informações de registro.

Isso elimina muitos riscos de segurança (não todos).

Bjarke

informação relacionada