簡體   English   中英

Linux-通過PHP創建用戶

[英]Linux - create user through PHP

我正在編寫一個調用bash腳本的PHP程序。 我正在使用Linux(Centos)。 我正在嘗試通過在PHP頁面中輸入用戶名和密碼來在Linux中創建一個新用戶。 這是我正在使用的腳本:

egrep "^$1" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
    echo "$1 exists!"
    exit 1
else

    sudo useradd -m -p $2 $1
    [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
fi

這就是我從PHP調用腳本的方式:

echo exec("/var/www/html/addUser.sh ".$username." ".$password);

從終端運行它時可以運行,但是從PHP調用腳本時不起作用。 這是權限問題。 為了允許PHP(apache)也添加用戶,我該怎么做? 我嘗試將“ apache”作為用戶和組添加到visudo:

%apache ALL=(ALL)   NOPASSWD: ALL
 apache    ALL=(ALL)       ALL

它仍然不起作用。 有任何想法嗎? 謝謝。

您正在嘗試讓PHP 以root身份在Web服務器上運行任意代碼-這是極不可取的,就像有人在您的代碼中發現一個漏洞並注入自己的代碼一樣,他們實際上可以使用您的代碼執行任何操作服務器!

話雖如此,您可以使用exec("command");調用外部腳本exec("command"); 或使用反引號,例如:

$command_output = `shell_command`;

有關更多信息,請參見php的exec函數。

如果您確實想繼續執行此操作,建議您存儲腳本(您要運行的腳本位於最頂部),然后使用exec()調用該腳本,同時僅允許sudo無密碼訪問該腳本。 。

額外:

您可能想嘗試用shell_exec而不是exec-這會在shell中運行命令,我認為這可以解決您可能遇到的任何環境問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM