Phpからシステムコールをかけています。
`Sudo /usr/bin/Perl -pi -e 's/foo/bar/g' /tmp/newxml.xml`;
これはphpcliで正常に機能します。ただし、Apacheには必要な実行権限がないため、ブラウザーを介したphpでは機能しません。/usr/bin/Perlのみを実行できるようにApacheをsudoerにするにはどうすればよいですか?
これを行うには/ etc/sudoersを編集する必要があることは理解していますが、どのように行うかはわかりません。ポインタはありますか?
RHEL5.5を実行しています
visudo
追加
nobody ALL=(ALL)NOPASSWD:/usr/bin/Perl
apacheユーザーが何であれ誰も置き換えないでください。
しかし、あなたはそれをすべきではありません。 Apache SudoにPerlへのアクセスを許可すると、基本的に、あなたのphpアプリケーションを危険にさらすボックスへの即時ルートが誰にでも与えられます。
Umaskで/tmp/newxml.xml
をチェックし、Apacheユーザーが書き込み可能であることを確認する必要があります。
セキュリティの観点から、ApacheユーザーにSudo権限を与えることは賢明ではないと思います。そのファイルの所有権をグループレベルで変更して、Apacheがsudoを必要とせずにファイルに書き込むことができるようにすることを検討しましたか?
まず、Perlを呼び出さなくても、php内から同じことを実行できます。
次に、rhelを実行しているときに、邪魔になったのはおそらくSELinuxです。 setroubleshooterを実行してみてください。これを修正する方法について、必要な情報が提供されます。
3番目:Apacheにルートを与えたり、sudoersの権利などを与えたりしないでください。