Automatizar la creación de usuarios

Automatizar la creación de usuarios

Tengo un sitio para mis alumnos y se ejecuta en Ubuntu 14.04. Cuando mis alumnos se registran en mi sitio, almaceno la información del usuario en una base de datos MySQL.

Me gustaría darles a mis alumnos un sitio web en mi instalación de Ubuntu, al registrarse en mi sitio, y me gustaría que esto estuviera automatizado. Mi pregunta es: ¿Puedo de alguna manera usar los datos directamente desde la base de datos MySQL para darles un subdominio (nombre de usuario.mydoamin.com) en mi Ubuntu o puedo ejecutar comandos de shell en Ubuntu desde PHP y automatizar lo que estoy haciendo manualmente ahora?

Respuesta1

¿Puedo ejecutar comandos de shell en Ubuntu desde PHP y automatizar lo que estoy haciendo manualmente ahora?

Puede ejecutar comandos de shell desde dentro PHPusando elshell_exec()función o usando el ` `operador (comilla invertida): si está ejecutando PHP< 5.4.0, primero asegúrese de desactivarmodo seguro, entonces en tu PHPscript puedes usar cualquiera de esas sintaxis:

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

A menos que desee capturar valores de retorno de comandos individuales, la forma más sencilla de hacer lo que está pidiendo sería condensar todo lo que está haciendo manualmente en el shell en un bashscript independiente (o lo que sea) que se llamará una vez. utilizando cualquiera de esos métodos. Por ejemplo, la sintaxis de un bashscript sería:

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

Para pasar parámetros al script (por ejemplo, el valor de una $usernamevariable):

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

Para recuperar los parámetros pasados ​​dentro del bashscript (por ejemplo, el valor de una $usernamevariable pasada con el método anterior):

#!/bin/bash

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

O simplemente haga referencia $1cuando sea necesario, por ejemplo:

#!/bin/bash

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

Respuesta2

Como seguimiento de mi propia pregunta, desarrollaré mi experiencia. Hice que la ejecución de Shell funcionara desde PHP, pero tuve importantes problemas de seguridad con la solución. Fue un error GRANDE de mi parte que no lo vi al principio.

Para eliminar los riesgos de seguridad, hice un script bash que buscaba usuarios activados en la tabla de usuarios. Si el usuario estaba activo Y no era un usuario de Linux, entonces el usuario debe crearse en mi Linux, se crea un usuario de base de datos, se crea un subdominio y se bloquea ssh para el usuario. Configuré un trabajo cron que se ejecuta cada 60 minutos y, tras la creación del usuario, se envía un correo electrónico al usuario con información de registro.

Eso elimina muchos riesgos de seguridad (no todos).

Bjarke

información relacionada