PHP 与 Shell 脚本通信



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

我使用 php exec() 函数调用 sudo -Eu userA command_to_run_program,由于 Ubuntu 上缺少某些安全功能或环境变量,它不起作用。

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

从后端,有一个 shell 脚本,其中包含一个固定的 Pid 运行并等待信号。如果这个过程接收到特定的信号,它将执行程序。假设我使用 userA 手动启动了这个 shell 脚本。所以我假设当它接收到信号并执行程序时,程序是使用 userA 执行的。

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

如果可以实现,那么这样做的最佳做法是什么?

感谢您的帮助!

换句话说

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

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

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

有关详细信息,请参见chownchmod手册页。

最新更新