Автоматизировать создание пользователей

Автоматизировать создание пользователей

У меня есть сайт для моих студентов, и он работает на Ubuntu 14.04. Когда мои студенты регистрируются на моем сайте, я сохраняю информацию о пользователях в базе данных MySQL.

Я хотел бы предоставить своим студентам веб-сайт на моей установке Ubuntu при регистрации на моем сайте, и я хотел бы, чтобы это было автоматизировано. Мой вопрос - Могу ли я как-то использовать данные напрямую из базы данных MySQL, чтобы предоставить им поддомен (username.mydoamin.com) на моем Ubuntu или я могу выполнять команды оболочки на Ubuntu из PHP и автоматизировать то, что я делаю вручную сейчас?

решение1

Могу ли я выполнять команды оболочки в Ubuntu из PHP и автоматизировать то, что я сейчас делаю вручную?

Вы можете запускать команды оболочки изнутри, PHPиспользуяshell_exec()функция или использование ` `оператора (обратная кавычка): если вы используете версию PHP< 5.4.0, сначала убедитесь, что вы отключилибезопасный режим, то в своем PHPскрипте вы можете использовать любой из этих синтаксисов:

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

Если вы не хотите захватывать возвращаемые значения из отдельных команд, наиболее простым способом сделать то, о чем вы просите, будет сжать все, что вы делаете вручную в оболочке, в автономный bash(или какой-либо другой) скрипт, который будет вызываться один раз с использованием любого из этих методов. Например, синтаксис для bashскрипта будет следующим:

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

Чтобы передать параметры скрипту (например, значение переменной $username):

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

Чтобы получить переданные параметры в bashскрипте (например, значение $usernameпеременной, переданной с помощью метода выше):

#!/bin/bash

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

Или просто сделайте ссылку $1там, где это необходимо, например:

#!/bin/bash

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

решение2

В продолжение моего собственного вопроса я расскажу о своем опыте. Я заставил Shell-исполнение работать из PHP, но у меня возникли серьезные проблемы с безопасностью решения. Это была КРУПНАЯ ошибка с моей стороны, что я не увидел этого в начале.

Чтобы устранить риски безопасности, я создал bash-скрипт, который искал активированных пользователей в таблице пользователей. Если пользователь был активен И не был пользователем Linux, то пользователь должен быть создан на моем Linux, создается пользователь базы данных, создается поддомен и ssh блокируется для пользователя. Я настроил cron-задание, которое выполняется каждые 60 минут, и после создания пользователя пользователю отправляется электронное письмо с регистрационной информацией.

Это устраняет множество рисков безопасности (но не все).

Бьярке

Связанный контент