gpt4 book ai didi

PHP 与 Shell 脚本通信

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:58 25 4
gpt4 key购买 nike

这是一个 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执行。

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

感谢您的帮助!

最佳答案

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

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

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

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

关于PHP 与 Shell 脚本通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35753310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com