Webサーバーを介してコマンドを実行する際に問題があります。
私が持っていることと達成したいこと:私はwww-data
グループ(sudoerではなく)を使ってApache2 Webサーバーを実行します。 Webサーバーで実行されるスクリプトは、特定のユーザー( "passthru"を使用するPHPスクリプト)でコマンドを実行する必要があります。
私が見つけた1つの可能な方法は、グループがwww-data
sudoで特定のコマンドを実行できるようにすることです(パスワードも必要ありません)。ただし、他のユーザーとしてコマンドを実行するには、root権限が必要です。コマンドエイリアスとして追加できますか?
さらに、コマンドライン引数/パラメータをコマンドに渡すこともできます。参考までに、パラメータの1つは-u
オプションでもあります。
これを達成する(より良い)方法はありますか?つまり、コマンドが1つしかないからです。
sudo -u myuser -c "MY_COMMAND WITH CHANGING ARGUMENTS"
私が知っているもう一つのオプションは、su
コマンドを使用することです。ただし、この場合はユーザーの助けを借りずにサーバー上でスクリプトを実行する必要があるため、パスワードを「ハッキング」する必要があります。
答え1
私は明らかな答えを見落としたに違いありません。
sudoers「source」とターゲットユーザー(代わりにコマンドを実行する必要があるユーザー)に追加し、プログラムパスを指定します。私の場合は、ユーザーの代わりにグループを使用します。
www-data ALL = (mytargetuser) NOPASSWD: /path/to/my/program
この回答で説明されているソリューションは次のとおりです。https://unix.stackexchange.com/a/13058