Apache sudoers访问

我正在做一个系统调用,这是PHP

`sudo /usr/bin/perl -pi -e 's/foo/bar/g' /tmp/newxml.xml`; 

在php cli中工作正常。 但不能在PHP中通过浏览器工作,因为Apache没有必要的执行权限。 如何让Apache成为一个sudoer只允许运行/ usr / bin / perl?

我明白,将不得不编辑/ etc / sudoers来做到这一点,但我不知道如何做到这一点。 任何指针?

我正在运行RHEL 5.5

 visudo 

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

用你的apache用户replace任何人。

但是你不应该这样做。 给Apache的sudo访问本质上给任何人立即根源到你的盒子谁妥协了你的PHP应用程序。

你应该检查/ /tmp/newxml.xml的umask,并确保你的apache用户可写。

我不认为从安全的angular度来看,给apache用户sudo权利是明智的。 你有没有考虑在组级别上更改该文件的所有权,以便Apache可以写入,而不需要sudo?

首先,你可以从内部做同样的事情,而不需要打电话给Perl。

其次,当你运行rhel的时候,可能是SELinux的问题。 尝试运行setroubleshooter,它会给你如何解决这个问题的必要信息。

第三:不要根植于apache,也不能为sudoers权利或任何类似的东西。