web-dev-qa-db-ja.com

Apachesudoersアクセス

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を実行しています

3
user1263746
visudo

追加

nobody ALL=(ALL)NOPASSWD:/usr/bin/Perl

apacheユーザーが何であれ誰も置き換えないでください。

しかし、あなたはそれをすべきではありません。 Apache SudoにPerlへのアクセスを許可すると、基本的に、あなたのphpアプリケーションを危険にさらすボックスへの即時ルートが誰にでも与えられます。

Umaskで/tmp/newxml.xmlをチェックし、Apacheユーザーが書き込み可能であることを確認する必要があります。

6
lawl0r

セキュリティの観点から、ApacheユーザーにSudo権限を与えることは賢明ではないと思います。そのファイルの所有権をグループレベルで変更して、Apacheがsudoを必要とせずにファイルに書き込むことができるようにすることを検討しましたか?

8
nickisfat

まず、Perlを呼び出さなくても、php内から同じことを実行できます。

次に、rhelを実行しているときに、邪魔になったのはおそらくSELinuxです。 setroubleshooterを実行してみてください。これを修正する方法について、必要な情報が提供されます。

3番目:Apacheにルートを与えたり、sudoersの権利などを与えたりしないでください。

1
Jonas Schäfer