我这样做:
$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的输出?
答案 0 :(得分:2)
使用--stdin for passwd从标准输入读取。然后你可以管道密码。
答案 1 :(得分:1)
您可以使用以下代码:
$user = 'kevin';
$pass = 'nivek';
shell_exec('echo -e "' . $pass . '" | sudo passwd --stdin ' . $user);
这似乎对我有用(虽然在没有sudo的情况下测试过,你可能需要第二个)。
我不确定sudo是否会起作用。