ユーザー作成の自動化

ユーザー作成の自動化

生徒用のサイトがあり、Ubuntu 14.04 で実行されています。生徒が自分のサイトで登録すると、ユーザー情報が MySQL DB に保存されます。

私のサイトに登録するときに、生徒に Ubuntu インストール上の Web サイトを提供したいのですが、これを自動化したいと考えています。質問は、MySQL DB から直接データを使用すれば、Ubuntu 上でサブドメイン (username.mydoamin.com) を提供できますか、または PHP から Ubuntu 上でシェル コマンドを実行して、現在手動​​で行っている作業を自動化できますか?

答え1

PHP から Ubuntu 上でシェル コマンドを実行し、現在手動​​で行っている作業を自動化できますか?

シェルコマンドはPHPshell_exec()関数または` `(バックティック)演算子を使用する:PHP5.4.0未満を実行している場合は、まず無効にしてくださいセーフモードスクリプトでは、PHP次のいずれかの構文を使用できます。

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

単一のコマンドからの戻り値を取得する場合を除き、要求されていることを実行する最も簡単な方法は、シェルで手動で実行しているすべての操作をスタンドアロンbash(または任意の) スクリプトに凝縮し、いずれかの方法を使用して 1 回呼び出すことです。たとえば、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

私自身の質問のフォローアップとして、私の経験に基づいて詳しく説明します。私は PHP からシェルを実行できるようにしましたが、そのソリューションには重大なセキュリティ上の問題がありました。これは、最初にこれに気付かなかった私の重大なミスでした。

セキュリティ リスクを排除するために、アクティブ化されたユーザーをユーザー テーブルで検索する bash スクリプトを作成しました。ユーザーがアクティブであり、Linux ユーザーでない場合は、Linux 上にユーザーが作成され、データベース ユーザーが作成され、サブドメインが作成され、そのユーザーの SSH がロックされます。60 分ごとに実行される cron ジョブを設定し、ユーザーの作成時に、登録情報を含む電子メールがユーザーに送信されます。

これにより、多くのセキュリティ リスク (すべてではありません) が排除されます。

ビャルケ

関連情報