0

我正在这样做:

$user = 'kevin';
$pass = 'nivek';
shell_exec('echo -e "' . $pass . '\n' . $pass . '" | sudo passwd ' . $user);`

但是当我执行这个时,我得到这个错误:

Enter new UNIX password: Retype new UNIX password: Sorry, passwords do not match
passwd: Authentication token manipulation error
passwd: password unchanged

为什么?我该如何解决这个问题以及如何隐藏 passwd 的输出?

4

2 回答 2

2

使用 --stdin 为 passwd 从标准输入读取。然后,您可以通过管道输入密码。

于 2011-04-08T12:23:10.570 回答
1

您可以使用以下代码:

$user = 'kevin';
$pass = 'nivek';
shell_exec('echo -e "' . $pass . '" | sudo passwd --stdin ' . $user);

这似乎对我有用(尽管在没有 sudo 的情况下进行了测试,但您可能需要第二个)。

我不确定 sudo 是否会起作用。

于 2011-04-08T12:49:25.210 回答