0

最初にシェルにログインする必要がある一連の Linux システム コマンドがあります。どうすればphpでそれを行うことができますか?

例えば:

$output2 = shell_exec('ls -lrt /opt/test 2>&1');

/opt/test にはユーザー/所有者 XXX のみがアクセスできるため、そのユーザー名でログインする必要があります。runuser コマンドは役立つかもしれませんが、指示が必要です。

実際には、システムコマンドを介してアプリケーションを実行する必要がありますが、その前に、そのユーザーがログインしてそのアプリケーションにアクセスする必要があります。

4

1 に答える 1

1

これを行う1つの方法は、特権ログインユーザーとして実行する必要のあるすべてのコマンドを含むシェルスクリプトを作成し、sudoを使用してそのシェルスクリプトを実行することです。

スクリプトを実行しているユーザーがスクリプトの実行を実行できるように、sudoersファイルを変更する必要があります。

例えば:

 Cmnd_Alias HTTP_COMMANDS = /usr/local/my_ls_script
 XXXX ALL=(ALL) NOPASSWD: HTTP_COMMANDS

ただし、これを行うときは注意してください。sudoers行が指定したコマンドのみを実行できることを確認してください。

また、ユーザーに少なくとも1回切り替えて、sudoを実行するようにしてください。そうしないと、Webサーバーはユーザーに対してsudoを実行できなくなります。

さらに、sudoersファイルでNO_TTYを無効にする必要がある場合があります。

コマンドを次のように変更します。

$output2 = shell_exec('sudo -u XXXX /usr/local/my_ls_script 2>&1');
于 2013-03-07T08:52:06.930 に答える