1

私はsuを含むphpスクリプトを持っています。シェルで実行すると、rootパスワードを要求され、正常に機能します。しかし今、私はそれのためのインターフェースを作りたいです。ご存知のように、php-apacheのすべてのコマンドはwww-dataユーザーとして実行され、このユーザーはパスワードを指定していないか、sudoersにありません。そのため、「echo pass | sudo -S ...」を使用できません。これは、www-dataのパスワードがわからず、www-dataにパスワードを設定したり、sudoers+nopassに追加したりするすべてのサーバーで論理的ではないためです。 、 それは...ですか?

この問題を解決するためにどのような解決策を提案できますか?

私のコマンドの1つ:

su -c \"/usr/sbin/dmidecode -s baseboard-serial-number | tr \  \-\"
4

2 に答える 2

2

phpseclibは、追加の拡張機能を必要としないため、ライブラリとして最適です。

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('example.com');
if (!$ssh->login('user', 'pass')) {
    exit('Login Failed');
}

echo $ssh->exec('whoami');
echo $ssh->exec('pwd');
?>

もう1つの代替手段はlibssh2ですが、これは個別にコンパイルする必要がありdifficult、セットアップ/使用することで有名です。

于 2012-09-08T07:44:57.957 に答える
0

私は最近、PHPが実際のBashシェルを取得して操作できるようにするプロジェクトを公開しました。これにより、rootを使用してシェルを簡単に取得できます。ここで入手してください:https ://github.com/merlinthemagic/MTS

ダウンロードした後は、次のコードを使用するだけです。

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);

$strCmd = "\"/usr/sbin/dmidecode -s baseboard-serial-number | tr \  \-\"";
$return1  = $shell->exeCmd($strCmd);

echo $return1;// return from your command
于 2016-05-26T10:03:00.827 に答える