[英]Php script to change Ubuntu user password
我寫了一個php腳本,允許用戶創建郵件服務帳戶。
shell_exec("sudo useradd -m ".escapeshellcmd($user_name)." -s /sbin/nologin"." -p ".crypt(escapeshellcmd($user_password),"abcd"));
現在,我想允許用戶更改/刪除他們的密碼/帳戶。 我嘗試使用
shell_exec("sudo deluser --remove-all-files -f ".$username);
我不知道如何實現密碼更改。
不幸的是,這些命令似乎不起作用。 如何實施這些?
更新 :用於處理密碼更改的代碼段
case 'change':
$username = $_POST['value'];
$newpwd = $_POST['Pwd'];
// Berry Langerak's code
$out = shell_exec(
sprintf(
"echo '%s:%s' | chpasswd",
escapeshellarg($username),
escapeshellarg($newpwd)
)
);
echo(json_encode($username." password has been updated"));
break;
好吧,在Ubuntu中,用於更改普通用戶密碼的命令為:
passwd $username
但是,外殼是交互式的,對於PHP腳本而言可能非常煩人。 但是,有一個非交互式的替代方法:
echo '$username:$password' | sudo chpasswd
在您的PHP腳本中,您可以執行以下操作:
<?php
$username = 'foo';
$password = 'foo';
$command = sprintf(
"echo '%s:%s' | sudo chpasswd",
escapeshellarg($username),
escapeshellarg($password)
);
exec($command, $output, $return);
if ($return === 0) {
// success.
}
else {
var_dump($return, $output); // failure.
}
免責聲明 :執行此行時, 請注意,該命令將在.bash_history和進程列表中可見。 您可能需要在執行shell命令之前對密碼進行加密,然后將-e
標志發送到chpasswd,以減輕這些風險。
編輯 :忘記了回聲語句,將其添加。
編輯 :添加了一些調試到腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.