1

いくつかのシェル スクリプトを使用する PHP フロントエンドを作成しています。ただし、問題は、特定のユーザーとして、非常に特定のディレクトリ (www-data によってアクセス可能であるが所有されていない) でスクリプトを呼び出す必要があることです。

$command = './myscript.py 2>&1 |  tee /tmp/outputfile.txt';       // set the command
$cwd = 'cd /home/secondUser/myscript';                                // set current working directory
$wrapper = 'echo "Password" | sudo -u secondUser bash -c';        // add extra wrappers
$fullCommand = $cwd.';'.$wrapper.' "'.$command.'"';             // combine subcommands
$output = system($fullCommand);

別の実行コマンド(shell_exec、exec ...)を試していました。ただし、ログに次のエラーが常に見つかります。

sudo: no tty present and no askpass program specified

問題は、シェル スクリプトを実行すること (sudoers を編集するなど) だけでなく、特定の ruser として実行することです。

そのためのヒントやコツはありますか?

4

1 に答える 1

0

1) ## 見出し ## これは PHP 関連ではなく、UNIX 関連であるため、おそらく他の stackexchange サーバーに移動する必要があります。

また、言及しているログ行は、問題が何であるかを正確に示しています。Sudo では、スクリプトからパスワードを渡すことはできません。ローカル エコーをオフにできるように端末 (tty) が必要です (入力した文字をパスワードとして使用しないようにするため)。sudoers ファイルでオーバーライドできます。ただし、パスワードのない秘密鍵を使用して SSH を使用して別のユーザーとしてログインするか、パスワードなしでコマンドを「sudo」できるようにすることで、おそらくまったく別の方法で解決する必要があります。両方ともここで言及されています:

2) 彼らはすでにこの問題を解決しています: https://serverfault.com/questions/160524/using-su-inside-of-a-shell-script

于 2012-05-02T10:24:49.053 に答える