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

passwd に --stdin を使用して、標準入力から読み取ります。次に、パスワードをパイプできます。

于 2011-04-08T12:23:10.570 に答える
1

次のコードを使用できます。

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

それは私にとってはうまくいくようです(sudoなしでテストされていますが、2番目が必要になる場合があります)。

sudo が機能するかどうかはわかりません。

于 2011-04-08T12:49:25.210 に答える