自动创建用户

自动创建用户

我有一个学生网站,运行在 Ubuntu 14.04 上。当我的学生在我的网站上注册时,我会将用户信息存储在 MySQL 数据库中。

我想在我的 Ubuntu 安装上为我的学生提供一个网站,当他们在我的网站上注册时,我希望这个过程是自动化的。我的问题是 - 我能否以某种方式使用来自 MySQL DB 的直接数据在我的 Ubuntu 上为他们提供一个子域名 (username.mydoamin.com),或者我能否从 PHP 在 Ubuntu 上执行 shell 命令,并自动执行我现在手动执行的操作?

答案1

我可以通过 PHP 在 Ubuntu 上执行 shell 命令并自动执行我现在手动执行的操作吗?

您可以PHP使用shell_exec()函数或使用` `(反引号)运算符:如果你运行的是PHP<5.4.0,请首先确保禁用安全模式,那么PHP您可以在脚本中使用以下任一语法:

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

除非您想捕获单个命令的返回值,否则最直接的方法是将您在 shell 中手动执行的所有操作压缩为一个独立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。我设置了一个每 60 分钟运行一次的 cron 作业,在创建用户时,会向用户发送一封包含注册信息的电子邮件。

这消除了很多安全风险(并非全部)。

比亚克

相关内容