自動建立使用者

自動建立使用者

我有一個供學生使用的網站,它在 Ubuntu 14.04 上運行。當我的學生在我的網站上註冊時,我將使用者資訊儲存在 MySQL 資料庫中。

當我的學生在我的網站上註冊時,我想為我的學生提供一個關於我的 Ubuntu 安裝的網站,並且我希望這是自動化的。我的問題是- 我可以以某種方式直接使用來自MySQL DB 的資料在我的Ubuntu 上為它們提供一個子網域(username.mydoamin.com),或者我可以在Ubuntu 上從PHP 執行shell 命令,並自動執行我現在手動執行的操作嗎?

答案1

我可以從 PHP 在 Ubuntu 上執行 shell 命令,並自動執行我現在手動執行的操作嗎?

PHP您可以使用以下命令從內部執行 shell 命令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

作為我自己問題的後續,我將詳細闡述我的經驗。我透過 PHP 使 Shell 執行工作正常,但該解決方案存在重大安全性問題。這是我手上的一個重大錯誤,我一開始就沒有看到這一點。

為了消除安全風險,我製作了一個 bash 腳本,用於在使用者表中尋找已啟動的使用者。如果用戶處於活動狀態且不是 Linux 用戶,那麼應該在我的 Linux 上建立該用戶,建立一個資料庫用戶,建立一個子網域,並為該用戶鎖定 ssh。我設定了一個每 60 分鐘運行一次的 cron 作業,並在使用者建立後向使用者發送一封包含註冊資訊的電子郵件。

這消除了許多安全風險(不是全部)。

比亞克

相關內容