Apache sudoers 访问

use*_*746 3 php redhat sudo apache-2.2

我正在从 php 进行系统调用,它是

`sudo /usr/bin/perl -pi -e 's/foo/bar/g' /tmp/newxml.xml`;
Run Code Online (Sandbox Code Playgroud)

在 php cli 中运行良好。但是不能通过浏览器在 php 中工作,因为 apache 没有所需的执行权限。如何使 apache 成为一个 sudoer 以允许仅运行 /usr/bin/perl ?

我知道必须编辑 /etc/sudoers 才能做到这一点,但我不确定如何完成。任何指针?

我正在运行 RHEL 5.5

小智 8

从安全的角度来看,我不认为给予 apache 用户 sudo 权限是明智的。您是否考虑过在组级别更改该文件的所有权,以便 apache 可以在不需要 sudo 的情况下对其进行写入?

  • 绝对地。当我想到让 sudo 访问 apache 时,我几乎窒息 (3认同)

小智 6

visudo
Run Code Online (Sandbox Code Playgroud)

添加

nobody ALL=(ALL)NOPASSWD:/usr/bin/perl
Run Code Online (Sandbox Code Playgroud)

用您的 apache 用户替换 nobody。

但你不应该那样做。授予 apache sudo 对 perl 的访问权限,本质上可以让任何人即时根到您的机器,并破坏您的 php 应用程序。

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

  • 我喜欢那些包含“你不应该这样做”而没有“改为这样做”的公认答案:)。 (4认同)
  • 您应该检查 `/tmp/newxml.xml` 的 umask 并确保您的 apache 用户可以写入它。发帖前请先阅读:) (2认同)