[英]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.