- 【PHP】下らねぇ質問はここに書き込みやがれ 2©2ch.net
78 :デフォルトの名無しさん[]:2015/08/05(水) 02:41:24.63 ID:2Cq1bTVi - Web上でパスワード変更するためのフォームを作成中です。
環境は、OS: Ubuntu 14.04.2 LTS カーネル: Linux 2.6.32 PHPバージョン: 5.5.9です。 以下のようにしてPHP上でexpectとpasswdコマンドを呼び出してパスワードを変更させています。 $cmd = EXPECT_PATH." -c \"\n"; $cmd .= PASSWD_COMMAND."\n"; $cmd .= "expect \\\"(current) UNIX password:\\\"\n"; $cmd .= "send -- \\\"".$old_password."\\n\\\"\n"; $cmd .= "expect \\\"Enter new UNIX password:\\\"\n"; $cmd .= "send -- \\\"".$new_password."\\n\\\"\n"; $cmd .= "expect \\\"Retype new UNIX password:\\\"\n"; $cmd .= "send -- \\\"".$retype_new_password."\\n\\\"\n"; $cmd .= "expect \\\"passwd: all authentication tokens updated successfully.\\\"\n"; $cmd .= "send -- \\\"exit\\n\\\"\n"; $cmd .= "\""; $stream = ssh2_exec($connection, $cmd); fclose($stream); ところがこの方法だと、実行中にシェル上でps -elf | grep passを実行すると 「/usr/bin/expect -c spawn /usr/bin/passwd expect "(current) UNIX password:" send -- "現在のパスワード\n"…send -- "exit\n"」 のようにパスワードが平文で表示されてしまいセキュリティ上問題があると思われます。 そこでphp側でパスワード等の情報を外部シェルスクリプトに渡して外部シェルスクリプト側でパスワードを変更させようと考えてますが、外部シェルスクリプトに変数を渡す方法を教えていただけますでしょうか。 なお、ssh2_execの第4引数に環境変数を設定できそうなので試してみましたがPHP Warning: ssh2_exec(): Failed setting old_password=oldpassword on remote end in /xxx/xxx/test.php on line XXのように言われてしまいました。
| - 【PHP】下らねぇ質問はここに書き込みやがれ 2©2ch.net
79 :78[]:2015/08/05(水) 02:46:10.16 ID:2Cq1bTVi - すみません。投稿時の文字数の規制のためコードを省略していた際に誤って一緒に削ってしまいましたが、
define('EXPECT_PATH', '/usr/bin/expect'); define('PASSWD_COMMAND', 'spawn /usr/bin/passwd'); が定義されています。 また、>>78のコードの前段階で以下のようにssh接続を行っています。 $server = "localhost"; $port = 22; if (!$connection = ssh2_connect($server, $port)) { echo "Connection failed!\n"; exit; } if (!ssh2_auth_password($connection, $username, $old_password)) { echo "Authentication failure!\n"; exit; } よろしくお願いいたします。
|
|