PHP与Shell脚本

时间:2016-03-02 16:48:11

标签: php linux bash shell ubuntu

这是一个Ubuntu系统,我需要PHP来执行一个具有特定用户名的程序,比方说userA。

我使用php exec()函数来调用sudo -Eu userA command_to_run_program,由于Ubuntu上缺少某些安全功能或环境变量,因此无法正常工作。

所以我在想是否可以实现这种替代方式:

从后端开始,有一个带有固定Pid的shell脚本正在运行并等待信号。如果此过程收到特定信号,它将执行该程序。假设我用userA手动启动了这个shell脚本。所以我假设当它收到信号并执行程序时,程序用userA执行。

在这台机器上有一个带PHP的apache服务器。前端用户进入PHP页面,php程序将信号发送到正在运行的shell脚本,唤醒shell脚本,因此程序由userA执行。

如果可以实现,最佳做法是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

换句话说,您需要从Web服务器的用户帐户到(特定的?)不同用户的某种权限升级。这有安全隐患,但我认为你已经考虑了可能性。

无论如何,以下步骤应该有效:

  • 创建一个运行相应代码的程序(尽管只是一个shell脚本)。
  • 将程序放入网络服务器可以访问的位置。
  • 使目标用户成为程序的所有者并设置SUID位。这样,执行它将使其在用户的帐户下运行。
  • 使网络服务器组成为程序组,并且只允许它(而不是其他用户)通过可执行位运行程序。

有关详细信息,请参阅chownchmod的联机帮助页。